The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl -w

use strict;
use Benchmark qw(:all);

use Scalar::Alias;

print "Benchmark; list alias vs. list assignment\n";

print "For integer\n";
my @integers = ((42) x 100);
cmpthese -1 => {
	alias => sub{
		for my $i(@integers){
			my alias($x) = $i;
			my alias($y) = $i;
			my alias($z) = $i;
		}
	},
	assign => sub{
		for my $i(@integers){
			my($x) = $i;
			my($y) = $i;
			my($z) = $i;
		}
	},
};

print "For string\n";
my @strings = (('foobar') x 100);
cmpthese -1 => {
	alias => sub{
		for my $i(@strings){
			my alias($x) = $i;
			my alias($y) = $i;
			my alias($z) = $i;
		}
	},
	assign => sub{
		for my $i(@strings){
			my($x) = $i;
			my($y) = $i;
			my($z) = $i;
		}
	},
};

print "For object reference\n";
my @refs = ((bless{}) x 100);
cmpthese -1 => {
	alias => sub{
		for my $i(@refs){
			my alias($x) = $i;
			my alias($y) = $i;
			my alias($z) = $i;
		}
	},
	assign => sub{
		for my $i(@refs){
			my($x) = $i;
			my($y) = $i;
			my($z) = $i;
		}
	},
};