Мне кажется, что тест не полон без этих вариантов<br>А с ними складывается другая картина<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rate&nbsp;&nbsp;&nbsp;&nbsp; array&nbsp;&nbsp; array_2&nbsp;&nbsp; perl io&nbsp;&nbsp;&nbsp; concat perl io_2<br>array&nbsp;&nbsp;&nbsp;&nbsp; 208/s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -33%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -39%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -52%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -69%<br>
array_2&nbsp;&nbsp; 310/s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 49%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -9%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -28%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -54%<br>perl io&nbsp;&nbsp; 340/s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 63%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -21%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -49%<br>concat&nbsp;&nbsp;&nbsp; 432/s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 107%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 39%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 27%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -36%<br>perl io_2 673/s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 223%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 117%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 98%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 56%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --<br>
<br><br>use Benchmark qw(:hireswallclock cmpthese);<br><br>my @test_data = (<br>&nbsp;&nbsp; &#39;a&#39; x 17,<br>&nbsp;&nbsp; &#39;b&#39; x 19,<br>&nbsp;&nbsp; &#39;c&#39; x 23,<br>&nbsp;&nbsp; &#39;d&#39; x 29,<br>&nbsp;&nbsp; &#39;e&#39; x 31,<br>&nbsp;&nbsp; &#39;f&#39; x 37,<br>
&nbsp;&nbsp; &#39;g&#39; x 41,<br>&nbsp;&nbsp; &#39;h&#39; x 43,<br>&nbsp;&nbsp; &#39;j&#39; x 47,<br>);<br><br>cmpthese(<br>&nbsp;&nbsp; 3000, {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39;concat&#39; =&gt; sub {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $scalar_c = &#39;&#39;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (my $i=0; $i &lt; 1000; $i++) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (@test_data) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $scalar_c .= $_;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $scalar_c;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39;array&#39; =&gt; sub {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my @a = ();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (my $i=0; $i &lt; 1000; $i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (@test_data) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push @a, $_<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return join &#39;&#39;, @a;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39;array_2&#39; =&gt; sub {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my @a = ();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (my $i=0; $i &lt; 1000; $i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push @a, @test_data;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return join &#39;&#39;, @a;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39;perl io&#39; =&gt; sub {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $scalar_io = &#39;&#39;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; open(my $fh, &#39;&gt;&#39;, \$scalar_io);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (my $i=0; $i &lt; 1000; $i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (@test_data) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print $fh $_;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; close $fh;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $scalar_io;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39;perl io_2&#39; =&gt; sub {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $scalar_io = &#39;&#39;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; open(my $fh, &#39;&gt;&#39;, \$scalar_io);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (my $i=0; $i &lt; 1000; $i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print $fh @test_data;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; close $fh;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $scalar_io;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },<br>&nbsp;&nbsp; }<br>);<br>