The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use Benchmark qw/ timethese cmpthese /;
use Win32::MMF;
use Win32::MMF::Shareable;

# -------------------------------------------------------------

# initialization - OO
my $ns = new Win32::MMF( -namespace => "shareable" )
    or die "Can not create shared memory";

# initialization - TIE
tie my $shvar1, "Win32::MMF::Shareable", 'Var1';
tie my $shvar2, "Win32::MMF::Shareable", 'Var2';
tie my $shvar3, "Win32::MMF::Shareable", 'Var3';

# -------------------------------------------------------------

# test data set
my $var1 = "Hello world!";
my $dirvar1;


# -------------------------------------------------------------

# benchmark

sub STORE_setvar
{
    $ns->setvar('Var1', $var1);
}

sub STORE_tiedvar
{
    $shvar1 = $var1;
}

sub STORE_direct
{
    $dirvar1 = $var1;
}

cmpthese( timethese (
     1000000,
     {
        'setvar' => '&STORE_setvar',
        'tiedvar' => '&STORE_tiedvar',
        'direct' => '&STORE_direct',
     } ) );