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 Hash::FieldHash ();

my $HUF;
BEGIN{
	if( eval{ require Hash::Util::FieldHash } ){
		$HUF = 'Hash::Util::FieldHash';
	}
	else{
		require Hash::Util::FieldHash::Compat;
		$HUF = 'Hash::Util::FieldHash::Compat';
	}

	$HUF->import(qw(fieldhash));
}

printf "Perl %vd on $^O\n", $^V;

print "$HUF ", $HUF->VERSION, "\n";
print "Hash::FieldHash ", Hash::FieldHash->VERSION, "\n";

fieldhash my %huf;
Hash::FieldHash::fieldhash my %hf;

my %hash;

cmpthese timethese -1 => {
	'H::U::F' => sub{
		my @list;

		for(1 .. 1000){
			my $o = bless {};
			$huf{$o}++;
			push @list, $o;
		}
	},
	'H::F' => sub{
		my @list;

		for(1 .. 1000){
			my $o = bless {};
			$hf{$o}++;
			push @list, $o;
		}
	},
	'normal' => sub{
		my @list;

		for(1 .. 1000){
			my $o = bless {};
			$o->{value}++;
			push @list, $o;
		}
	},
	
};