#! perl -slw use strict; use Benchmark qw[cmpthese]; sub printto { print {$_[0]} $_[1]; return; } sub defer { ${$_[0]} .= $_[1].$/; return; } open our $fh, '>', 'junk.out' or die $!; cmpthese( -60, { direct=> q[ print $fh 'Direct'; for(0..130_000) { printto $fh, $_; } ], inlined=> q[ print $fh 'Inlined'; for(0..130_000) { print $fh $_; } ], deferred=> q[ print $fh 'Deferred'; my $output = ''; for(0..130_000) { defer \$output, $_ } print $fh $output; ], inline_deferred=> q[ print $fh 'Inline-deffered'; my $output=''; for(0..130_000) { $output .= $_ . $/; } print $fh $output; ], }); close $fh; __END__ D:\Perl\test>test s/iter direct inlined deferred inline_deferred direct 7.57 -- -48% -57% -85% inlined 3.93 93% -- -17% -71% deferred 3.26 132% 20% -- -65% inline_deferred 1.13 568% 247% 188% --