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);


sub add{ $_[0] + $_[1] }

use macro::filter add => \&add;

printf "macro/%s\n", macro->VERSION;

my $n = 1000;
cmpthese timethese -1 => {
	macro => sub{
		my $sum = 0;
		for my $i (1 .. $n){
			$sum = add($sum, $i);
		}
	},
	sub => sub{
		my $sum = 0;
		for my $i (1 .. $n){
			$sum = &add($sum, $i);
		}
	},
	do => sub{
		my $sum = 0;
		for my $i (1 .. $n){
			$sum = do{ $sum + $i };
		}
	},
	eval => sub{
		my $sum = 0;
		for my $i (1 .. $n){
			$sum = eval{ $sum + $i };
		}
	},
};