Pole
Honza Pazdziora
adelton na informatics.muni.cz
Pondělí Únor 25 14:44:01 MET 2002
On Mon, Feb 25, 2002 at 02:37:44PM +0100, Roman Fordinal wrote:
>
> JK> Obcas neni od veci se podivat do dokumntace.
> JK> Myslite ze je to efektivnejsi nez:
>
> JK> $text = join('', na pole);
> v tomto pripade iste, ale pocital som ze pocas toho FOREACH aj s tym
> bude chciet nieco este robit :) totiz ze ten cyklus nebude prazdny.
> ale v konecnom dosledku join je vlastne len FOREACHom nad danym polom.
> ide len o skratenie kodu v main::
>
> (theeeeda aspon myslim) :)
Ne tak docela: na me pomale pracovni stanici:
$ perl
use Benchmark;
timethese(1000, {
foreach => sub {
my @pole = ('x', 'sdfg', 'cvb') x 100;
my $out = '';
for (@pole) { $out .= $_ }
},
join => sub {
my @pole = ('x', 'sdfg', 'cvb') x 100;
my $out = join '', @pole;
}
});
__END__
Benchmark: timing 1000 iterations of foreach, join...
foreach: 14 secs ( 4.74 usr 0.11 sys = 4.85 cpu)
join: 10 secs ( 3.14 usr 0.08 sys = 3.22 cpu)
a na podstatne rychlejsim serveru:
$ perl
use Benchmark;
timethese(10000, {
foreach => sub {
my @pole = ('x', 'sdfg', 'cvb') x 1000;
my $out = '';
for (@pole) { $out .= $_ }
},
join => sub {
my @pole = ('x', 'sdfg', 'cvb') x 1000;
my $out = join '', @pole;
}
});
__END__
Benchmark: timing 10000 iterations of foreach, join...
foreach: 47 wallclock secs (44.92 usr + 0.68 sys = 45.60 CPU) @ 219.30/s (n=10000)
join: 34 wallclock secs (30.96 usr + 0.74 sys = 31.70 CPU) @ 315.46/s (n=10000)
--
------------------------------------------------------------------------
Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
... all of these signs saying sorry but we're closed ...
------------------------------------------------------------------------
Další informace o konferenci Perl