#! /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 ); }, };