#!/usr/bin/perl use Benchmark qw(:all); %h_delete = %h_list = %h_undef = (0 .. 50000); delete @h_delete{keys %h_delete}; %h_list = (); undef %h_undef; timethese 10000, { delete => '1 for keys %h_delete', list => '1 for keys %h_list', undef => '1 for keys %h_undef', }; __END__ Benchmark: timing 10000 iterations of delete, list, undef... delete: 5 wallclock secs ( 2.43 usr + 0.00 sys = 2.43 CPU) @ 4115.23/s (n=10000) list: 5 wallclock secs ( 2.44 usr + 0.00 sys = 2.44 CPU) @ 4098.36/s (n=10000) undef: 0 wallclock secs ( 0.02 usr + 0.00 sys = 0.02 CPU) @ 500000.00/s (n=10000) (warning: too few iterations for a reliable count)