Coro-LocalScalar-XS
view release on metacpan or search on metacpan
t/benchmark.pl view on Meta::CPAN
cmpthese(10000, {
'Coro::LocalScalar' => sub {
my $scalar;
Coro::LocalScalar->new->localize($scalar);
async {
$scalar = "thread 1";
cede;
die unless $scalar eq "thread 1";
$scalar = "thread 1 rewrite";
cede;
die unless $scalar eq "thread 1 rewrite";
};
async {
$scalar = "thread 2";
cede;
die unless $scalar eq "thread 2";
$scalar = "thread 2 rewrite";
cede;
die unless $scalar eq "thread 2 rewrite";
};
cede;
cede;
cede;
},
'Coro::LocalScalar::XS' => sub {
my $scalar;
Coro::LocalScalar::XS->localize($scalar);
async {
$scalar = "thread 1";
cede;
die unless $scalar eq "thread 1";
$scalar = "thread 1 rewrite";
cede;
die unless $scalar eq "thread 1 rewrite";
# warn 1;
};
async {
$scalar = "thread 2";
cede;
die unless $scalar eq "thread 2";
$scalar = "thread 2 rewrite";
cede;
die unless $scalar eq "thread 2 rewrite";
};
cede;
cede;
cede;
},
'Coro::Localize' => sub {
async {
corolocal $cscalar = "thread 1";
cede;
die unless $cscalar eq "thread 1";
$cscalar = "thread 1 rewrite";
cede;
die unless $cscalar eq "thread 1 rewrite";
# warn 1;
};
async {
corolocal $cscalar = "thread 2";
cede;
die unless $cscalar eq "thread 2";
$cscalar = "thread 2 rewrite";
cede;
die unless $cscalar eq "thread 2 rewrite";
};
cede;
cede;
cede;
},
});
( run in 0.488 second using v1.01-cache-2.11-cpan-5a3173703d6 )