use Benchmark qw(timethese); use Clone; use Storable; #use Scalar::Util::Clone; my $struct = { 'foo' => 'bar', 'move' => 'zig', bar => [1, 2, 3] }; timethese ( 500000, { 'Clone' => sub { my $s = Clone::clone($struct) }, #'Scalar::Util::Clone' => sub { my $s = Scalar::Util::Clone::clone ($struct) }, 'Storable' => sub { my $s = Storable::dclone ($struct) } } ); #Benchmark: timing 500000 iterations of Clone, Storable... # Clone: 3 wallclock secs ( 4.28 usr + 0.00 sys = 4.28 CPU) @ 116904.37/s (n=500000) # Storable: 74 wallclock secs (69.62 usr + 0.03 sys = 69.65 CPU) @ 7178.65/s (n=500000)