use Benchmark qw{ timeit timediff timestr }; use strict; my @array; for (1 .. 10) { push(@array, $_); my $time = timeit(500000, "&search_array($_)"); my $time2 = timeit(500000, "&search_hash($_)"); printf("%2d %s\n", $_, timestr timediff($time, $time2)); } sub search_array { my $max = shift; my $item; my $looking = int(rand($max)); foreach $item (@array) { return 1 if $item == $looking; } return; } sub search_hash { my $max = shift; my %hash; @hash{@array} = (); return 1 if exists $hash{rand($max)}; return; }