use strict; use Benchmark; use Apache::Session::Store::DB_File; use vars qw($rs $ws $n); my $dir = int(rand(10000)); mkdir $dir, 0700; chdir $dir; $ws = { args => {FileName => 'bench.dbm'}, data => {_session_id => 0}, serialized => "A"x2**10 }; $rs = { args => {FileName => 'bench.dbm'}, data => {_session_id => 0}, serialized => "A"x2**10 }; sub insert { my $store = new Apache::Session::Store::DB_File; $store->insert($ws); $ws->{data}->{_session_id}++; } sub materialize { $rs->{data}->{_session_id} = int(rand($ws->{data}->{_session_id} - 1)); my $store = new Apache::Session::Store::DB_File; $store->materialize($rs); } timethis(1000, \&insert, 'Insert First 1000'); timethis(1000, \&materialize, 'Random Access n=1000'); for (my $i = 0; $i < 9000; $i++) { &insert; } timethis(1000, \&insert, 'Insert 10000-11000'); timethis(1000, \&materialize, 'Random Access n=11000'); for (my $i = 0; $i < 89000; $i++) { &insert; } timethis(1000, \&insert, 'Insert 100000-101000'); timethis(1000, \&materialize, 'Random Access n=101000'); unlink './bench.dbm'; chdir '..'; rmdir $dir;