#! perl -slw use strict; use Time::HiRes qw[ time ]; sub mem{ `tasklist /nh /fi "PID eq $$"` =~ m[(\S+ K)$] } our $S //= 1; my $scale = chr( ord('a') + $S - 1 ); print "Start: mem: ", mem; my( $i, %lookup ) = 1; $lookup{ $_ } = $i, $lookup{ $i++ } = $_ for 'aaaaa' .. $scale . 'zzzz'; print scalar keys %lookup; print "Hash built: mem: ", mem; my $start = time; for( 'aaaaa' .. $scale . 'zzzz' ) { my $addr = $lookup{ $_ }; # print $addr; } printf "Fetch by Name took %f seconds \n", time() - $start; $start = time; for( 1 .. 26**4 * $S ) { my $name = $lookup{ $_ }; # print $name; } printf "Fetch by Addr took %f seconds \n", time() - $start; print "Hash queried: check mem: ", mem; __END__ C:\test>1112165-hash -S=1 Start: mem: 8,032 K 913952 Hash built: mem: 169,116 K Fetch by Name took 0.217840 seconds Fetch by Addr took 0.234923 seconds Hash queried: check mem: 169,140 K C:\test>1112165-hash -S=2 Start: mem: 8,008 K 1827904 Hash built: mem: 329,660 K Fetch by Name took 0.445586 seconds Fetch by Addr took 0.512336 seconds Hash queried: check mem: 329,684 K C:\test>1112165-hash -S=3 Start: mem: 7,984 K 2741856 Hash built: mem: 524,328 K Fetch by Name took 0.699219 seconds Fetch by Addr took 0.717473 seconds Hash queried: check mem: 524,352 K C:\test>1112165-hash -S=4 Start: mem: 7,972 K 3655808 Hash built: mem: 651,160 K Fetch by Name took 0.976562 seconds Fetch by Addr took 1.065514 seconds Hash queried: check mem: 651,184 K