in reply to Ref to hash entries are faster?
If you wish to ignore Tanktalus's good advice and sweat the small stuff then a benchmark gives an answer. Normal benchmark caveats apply of course - like the benchmark may not indicate anything at all about your particular situation.
use strict; use warnings; use Benchmark qw(cmpthese); use constant kHalfMax => 509; # Must be odd my %Contracts = (1..4 * kHalfMax); # kHalfMax * 2 key/value pairs my $key = kHalfMax; cmpthese (-1, { lookup => \&lookup, refit => \&refit, } ); sub lookup { return if $Contracts{$key} == 1; return if $Contracts{$key} == 1; return if $Contracts{$key} == 1; return if $Contracts{$key} == 1; return if $Contracts{$key} == 1; return if $Contracts{$key} == 1; return if $Contracts{$key} == 1; return if $Contracts{$key} == 1; } sub refit { my $ref = \$Contracts{$key}; return if $$ref == 1; return if $$ref == 1; return if $$ref == 1; return if $$ref == 1; return if $$ref == 1; return if $$ref == 1; return if $$ref == 1; return if $$ref == 1; }
Result:
Rate lookup refit lookup 443125/s -- -32% refit 648621/s 46% --
Note that the result is somewhat sensitive to the number of key/value pairs in the hash. 46% is about the largest difference I've seen.
Note too that at about 200 nano-seconds per access this tweak is unlikely to make much difference to most applications. Code clarity would be a much more important consideration!
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Ref to hash entries are faster?
by ikegami (Patriarch) on Nov 29, 2006 at 23:29 UTC | |
by GrandFather (Saint) on Nov 30, 2006 at 00:06 UTC | |
|
Re^2: Ref to hash entries are faster?
by Wiggins (Hermit) on Nov 29, 2006 at 21:28 UTC | |
by Not_a_Number (Prior) on Nov 29, 2006 at 23:16 UTC |