JavaScript-V8-XS
view release on metacpan or search on metacpan
t/03_eval_in_loop.t view on Meta::CPAN
use strict;
use warnings;
use Data::Dumper;
use Time::HiRes;
use Test::More;
my $CLASS = 'JavaScript::V8::XS';
sub test_eval {
my ($times, $do_reset) = @_;
my $count = 0;
my $js = '2 * 2';
my $expected = 4;
my @vms;
my $vm;
my $t0 = Time::HiRes::gettimeofday();
$vm = $CLASS->new() if $do_reset;
for ($count = 0; $count < $times; ++$count) {
if ($do_reset) {
$vm->reset();
}
else {
$vm = $CLASS->new();
}
push @vms, $vm;
# my $got = $vm->eval("2 * 2");
# next if $got == $expected;
# ok(0, "$got == $expected");
# last;
}
my $t1 = Time::HiRes::gettimeofday();
my $elapsed = 1000.0 * ($t1 - $t0);
ok($count == $times,
sprintf("did all %d iterations with reset=%d, %.0f ms, %.2fms each",
$times, $do_reset ? 1 : 0, $elapsed, $elapsed / $times));
}
sub main {
use_ok($CLASS);
my $times = 100;
test_eval($times, 1);
test_eval($times, 0);
done_testing;
return 0;
}
exit main();
( run in 1.449 second using v1.01-cache-2.11-cpan-71847e10f99 )