in reply to RE: Buzzcutbuddha(I Stand Corrected): C Style For and Foreach The Same
in thread Finding the length of an array of arrays
Benchmark: timing 10000 iterations of for1000, for10000, for10000a, fo +r1000a, foreach1000, foreach10000... for1000: 73 wallclock secs (60.06 usr + 0.16 sys = 60.22 CPU) for10000: 795 wallclock secs (632.63 usr + 1.39 sys = 634.02 CPU) for10000a: 508 wallclock secs (398.29 usr + 0.89 sys = 399.18 CPU) for1000a: 45 wallclock secs (37.13 usr + 0.06 sys = 37.19 CPU) foreach1000: 30 wallclock secs (24.32 usr + 0.06 sys = 24.38 CPU) foreach10000: 360 wallclock secs (276.53 usr + 0.69 sys = 277.22 CPU) use Benchmark; sub foreach1000() { my @x = (1..1000); foreach(@x) { my $z = $_; } } sub for1000() { my @x = (1..1000); for(my $y = 0; $y < scalar(@x); $y++) { my $z = $x[$y]; } } sub for1000a() { my @x = (1..1000); my $len = scalar(@x); for(my $y = 0; $y < $len; $y++) { my $z = $x[$y]; } } sub foreach10000() { my @x = (1..10000); foreach(@x) { my $z = $_; } } sub for10000() { my @x = (1..10000); for(my $y = 0; $y < scalar(@x); $y++) { my $z = $x[$y]; } } sub for10000a() { my @x = (1..10000); my $len = scalar(@x); for(my $y = 0; $y < $len; $y++) { my $z = $x[$y]; } } timethese( 10000, { for1000 => 'for1000()', for1000a => 'for1000a()', foreach1000 => 'foreach1000()', for10000 => 'for10000()', for10000a => 'for10000a()', foreach10000 => 'foreach10000()' });
|
|---|