The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

#!/pro/bin/perl
use strict;
use Time::HiRes qw( gettimeofday tv_interval );
require "./t/util.pl";
my %hash;
my $DBD = "MariaDB";
cleanup ($DBD);
eval { tie %hash, "Tie::Hash::DBD", dsn ($DBD) };
tied %hash or plan_fail ($DBD);
ok (tied %hash, "Hash tied");
foreach my $size (10, 100, 1000) {
my %plain = map { ( $_ => $_ ) }
map { ( $_, pack "l", $_ ) }
-($size - 1) .. $size;
my $s_size = 2 * $size;
my $t0 = [ gettimeofday ];
ok (%hash = %plain, "Assign hash $s_size elements");
my $elapsed = tv_interval ($t0) || 0.000001;
note (sprintf "Write %.3f recs/sec", $s_size / $elapsed);
$t0 = [ gettimeofday ];
is_deeply (\%hash, \%plain, "Content $s_size");
$elapsed = tv_interval ($t0) || 0.000001;
note (sprintf "Read %.3f recs/sec", $s_size / $elapsed);
}
untie %hash;
cleanup ($DBD);
done_testing;