#!perl -w

use strict;
use Benchmark qw(:all);

use WeakRef::Auto;
use Scalar::Util qw(weaken);

my $weakref;
my $normal;

autoweaken my $autoweak;

my $ref = [42];

print "Create:\n";
cmpthese timethese -1 => {
	weakref => sub{
		for(1 .. 100){
			$weakref = $ref;
			weaken $weakref;
		}
	},
	autoweak => sub{
		for(1 .. 100){
			$autoweak = $ref;
		}
	},
	strongref => sub{
		for(1 .. 100){
			$normal = $ref;
		}
	},
};

print "\nCreate and destroy:\n";
cmpthese timethese -1 => {
	weakref => sub{
		for(1 .. 100){
			$weakref = [42];
			weaken $weakref;
		}
	},
	autoweak => sub{
		for(1 .. 100){
			$autoweak = [42];
		}
	},
	strongref => sub{
		for(1 .. 100){
			$normal = [42];
		}
	},
};