use Apache::Session::DBI; use DBI; use Benchmark; use vars qw($dbh $id); $dbh = DBI->connect('dbi:mysql:sessions', 'test', '', {RaiseError => 1}); sub new_session { my $s; tie %$s, 'Apache::Session::DBI', undef, {Handle => $dbh}; } sub get_id { my $s; tie %$s, 'Apache::Session::DBI', undef, {Handle => $dbh}; $id = $s->{_session_id}; } sub reopen { my $s; tie %$s, 'Apache::Session::DBI', $id, {Handle => $dbh}; } sub openread { my $s; tie %$s, 'Apache::Session::DBI', $id, {Handle => $dbh}; my $sid = $s->{_session_id}; } sub openwrite { my $s; tie %$s, 'Apache::Session::DBI', $id, {Handle => $dbh}; $s->{foo} = 'bar'; } &get_id; timethese(10000, { 'New' => \&new_session, 'Reopen' => \&reopen, 'Read Old' => \&openread, 'Write Old' => \&openwrite, });