The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
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,
});