in reply to Re: performance of counting keys in a big hash
in thread performance of counting keys in a big hash
A good piece of research, however the possibility exists that the two results are related and generating the first one also pre-generates the second one. I suggest that tests like these are best done in separate methods on separate data just to be sure.
Results:#!/usr/bin/perl use strict; use warnings; use Benchmark qw(:all) ; my $n = 100000; our %hash1; @hash1{1..$n} = 1 x $n; my $n2 = 100000; our %hash2; @hash2{1..$n2} = 1 x $n2; my $n3 = 1000000; our %hash3; @hash3{1..$n3} = 1 x $n3; cmpthese( 1000, { 'Method 1' => sub { my @k = keys %hash1; my $v = scalar @k; }, '100K' => sub { my $v = scalar keys %hash2; }, '1 Mill' => sub { my $v = scalar keys %hash3; } } );
Note result appears to be same for 100k and 1Million entries in hash.Rate Method 1 1 Mill + 100K Method 1 15.0/s -- -100% + -100% 1 Mill 999999999999999872/s 6645700000000000000% -- + 0% 100K 999999999999999872/s 6645700000000000000% 0% + --
If you spot any bugs in my solutions, it's because I've deliberately left them in as an exercise for the reader! :-)
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^3: performance of counting keys in a big hash
by hdb (Monsignor) on May 22, 2013 at 12:13 UTC | |
by space_monk (Chaplain) on May 22, 2013 at 12:19 UTC |
In Section
Seekers of Perl Wisdom