use strict; use warnings; use List::Util 'shuffle'; use Time::HiRes 'time'; use TokyoCabinet; use KyotoCabinet; srand 0; my %hash; my $ob2 = tie my %h2, 'TokyoCabinet::ADB', '+'; # Tree my $ob4 = tie my %h4, 'KyotoCabinet::DB', '%#pccap=256m'; # Tree my $size = 5e6; my $start; my @keys = shuffle 1 .. $size; # plain hash 4.342 seconds # for ( 1 .. $size ) { # $hash{$_} = "$_ some string..."; # } # $start = time; # for ( @keys ) { # my $v = $hash{$_}; # } # TokyoCabinet 11.572 seconds '+' tree # TokyoCabinet 8.936 seconds '*' hash # for ( 1 .. $size ) { # $ob2->STORE($_ => "$_ some string..."); # } # $start = time; # for ( @keys ) { # my $v = $ob2->FETCH($_); # } # KyotoCabinet 11.991 seconds '%' tree # KyotoCabinet 6.087 seconds '*' hash for ( 1 .. $size ) { $ob4->STORE($_ => "$_ some string..."); } $start = time; for ( @keys ) { my $v = $ob4->FETCH($_); } printf "duration: %0.03f seconds\n", time - $start;