in reply to Re: The speed of $_ versus a lexical
in thread The speed of $_ versus a lexical
#! /usr/bin/perl -w use strict; use Benchmark; my @a = (1..500000); use Inline C => <<'ADDUP_END'; double addup( SV* stub, ... ) { double total = 0; int i; Inline_Stack_Vars; for( i = 0; i < Inline_Stack_Items; ++i ) { total += SvNV(Inline_Stack_Item(i)); } return total; } ADDUP_END timethese shift || 100, { '$_' => sub { my $count = 0; foreach( @a ) { $count += $_; } }, 'my' => sub { my $count = 0; foreach my $var( @a ) { $count += $var; } }, 'Inline' => sub { my $count = addup( @a ); }, };
now I see around a 7% gain in favour of lexicals (i.e., barely above the noise level). It's not the 25% I was expecting. Heh, the Inline method is close to an order of magnitude faster!
update: tip o' the hat to Hofmator for spotting an orphan $rec.
update 2001-08-06: in my travels through the older nodes in the monastery, I encountered another thread that deals with a similar topic: is 'my' that much faster than 'local'?. It may be of interest.
--
|
|---|