Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re^5: using ref to hash of hash effectively

by alexander_lunev (Pilgrim)
on Dec 27, 2020 at 19:18 UTC ( [id://11125812]=note: print w/replies, xml ) Need Help??


in reply to Re^4: using ref to hash of hash effectively
in thread using ref to hash of hash effectively

Thank you for this. I've done this benchmark:

use strict; use Benchmark qw(:all); my $weapons_ref = { dagger => { cost => 8, damage => 4, armor => 0 }, shortsword => { cost => 10, damage => 5, armor => 0 }, warhammer => { cost => 25, damage => 6, armor => 0 }, longsword => { cost => 40, damage => 7, armor => 0 }, greataxe => { cost => 74, damage => 8, armor => 0 }, }; my @sum_fields = qw/cost damage armor/; my $count; cmpthese($count, { 'MapSub' => sub { my $sum_result; map { my $name = $_; map { $sum_result->{$_} += $weapons_ref->{$name}->{$_} } @sum_ +fields } keys %{ $weapons_ref }; }, 'ForSub' => sub { my $sum_result; foreach my $name (keys %{ $weapons_ref }) { foreach my $field (@sum_fields) { $sum_result->{$field} += $weapons_ref->{$name}->{$field}; } } }, });

And here's result:

Rate MapSub ForSub MapSub 197098/s -- -33% ForSub 294627/s 49% --

map is a bit slower, yes, but not critical. Anyway, thank you again, I will remember this if have to do code optimization.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11125812]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others goofing around in the Monastery: (6)
As of 2024-03-28 10:58 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found