Skip to content

Commit cfe2c50

Browse files
author
Geoffrey Broadwell
committed
Add output and expected subs for three more microbenchmarks
1 parent fc11603 commit cfe2c50

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

microbenchmarks.pl

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -436,25 +436,28 @@
436436
tags => [qw( for cross )],
437437
scale => 1 << 7,
438438
work => sub { $_[0] * $_[0] },
439-
perl5 => 'sub mk2d { my ($h, $w) = @_; my $x = 0; my $y = 0; sub { return if $y >= $h; my @c = ($y, $x); if (++$x >= $w) { $x = 0; ++$y; }; @c } }; my $it = mk2d(SCALE, SCALE); while (my ($i, $j) = $it->()) { $i + $j }; 1',
440-
perl6 => 'for ^SCALE X ^SCALE -> $i, $j { $i + $j }; 1',
441-
nqp => 'sub mk2d($h, $w) { my $x := 0; my $y := 0; sub () { return () if $y >= $h; my @c := ($y, $x); if ++$x >= $w { $x := 0; ++$y; }; @c } }; my $it := mk2d(SCALE, SCALE); while $it() -> @c { @c[0] + @c[1] }; 1',
439+
expected => sub { ($_[0] * 2) . "\n" },
440+
perl5 => 'my $k = 0; sub mk2d { my ($h, $w) = @_; my $x = 1; my $y = 1; sub { return if $y > $h; my @c = ($y, $x); if (++$x > $w) { $x = 1; ++$y; }; @c } }; my $it = mk2d(SCALE, SCALE); while (my ($i, $j) = $it->()) { $k = $i + $j }; say $k;',
441+
perl6 => 'my $k = 0; for 1 .. SCALE X 1 .. SCALE -> $i, $j { $k = $i + $j }; say $k;',
442+
nqp => 'my $k := 0; sub mk2d($h, $w) { my $x := 1; my $y := 1; sub () { return () if $y > $h; my @c := ($y, $x); if ++$x > $w { $x := 1; ++$y; }; @c } }; my $it := mk2d(SCALE, SCALE); while $it() -> @c { $k := @c[0] + @c[1] }; say($k);',
442443
},
443444
{
444445
name => 'create_and_copy_2d_grid_cross',
445446
tags => [qw( for cross array forest-fire )],
446447
scale => 1 << 7,
447448
work => sub { $_[0] * $_[0] },
448-
perl5 => 'sub mk2d { my ($h, $w) = @_; my $x = 0; my $y = 0; sub { return if $y >= $h; my @c = ($y, $x); if (++$x >= $w) { $x = 0; ++$y; }; @c } }; my (@src, @dst); my $it = mk2d(SCALE, SCALE); while (my ($i, $j) = $it->()) { $src[$i][$j] = $i + $j }; $it = mk2d(SCALE, SCALE); while (my ($i, $j) = $it->()) { $dst[$i][$j] = $src[$i][$j] }; 1',
449-
perl6 => 'my (@src, @dst); for ^SCALE X ^SCALE -> $i, $j { @src[$i][$j] = $i + $j }; for ^SCALE X ^SCALE -> $i, $j { @dst[$i][$j] = @src[$i][$j] }; 1',
450-
nqp => 'sub mk2d($h, $w) { my $x := 0; my $y := 0; sub () { return () if $y >= $h; my @c := ($y, $x); if ++$x >= $w { $x := 0; ++$y; }; @c } }; my @src; my @dst; my $it := mk2d(SCALE, SCALE); while $it() -> @c { @src[@c[0]] := [] unless @src[@c[0]]; @src[@c[0]][@c[1]] := @c[0] + @c[1] }; $it := mk2d(SCALE, SCALE); while $it() -> @c { @dst[@c[0]] := [] unless @dst[@c[0]]; @dst[@c[0]][@c[1]] := @src[@c[0]][@c[1]] }; 1',
449+
expected => sub { ($_[0] * 2) . "\n" },
450+
perl5 => 'sub mk2d { my ($h, $w) = @_; my $x = 1; my $y = 1; sub { return if $y > $h; my @c = ($y, $x); if (++$x > $w) { $x = 1; ++$y; }; @c } }; my (@src, @dst); $dst[0][0] = 0; my $it = mk2d(SCALE, SCALE); while (my ($i, $j) = $it->()) { $src[$i][$j] = $i + $j }; $it = mk2d(SCALE, SCALE); while (my ($i, $j) = $it->()) { $dst[$i][$j] = $src[$i][$j] }; say $dst[SCALE][SCALE];',
451+
perl6 => 'my (@src, @dst); @dst[0][0] = 0; for 1 .. SCALE X 1 ..SCALE -> $i, $j { @src[$i][$j] = $i + $j }; for 1 .. SCALE X 1 .. SCALE -> $i, $j { @dst[$i][$j] = @src[$i][$j] }; say @dst[SCALE][SCALE];',
452+
nqp => 'sub mk2d($h, $w) { my $x := 1; my $y := 1; sub () { return () if $y > $h; my @c := ($y, $x); if ++$x > $w { $x := 1; ++$y; }; @c } }; my @src; my @dst; @dst[0][0] := 0; my $it := mk2d(SCALE, SCALE); while $it() -> @c { @src[@c[0]] := [] unless @src[@c[0]]; @src[@c[0]][@c[1]] := @c[0] + @c[1] }; $it := mk2d(SCALE, SCALE); while $it() -> @c { @dst[@c[0]] := [] unless @dst[@c[0]]; @dst[@c[0]][@c[1]] := @src[@c[0]][@c[1]] }; say(@dst[SCALE][SCALE]);',
451453
},
452454
{
453455
name => 'create_and_iterate_hash_kv',
454456
tags => [qw( for while hash hash_kv )],
455457
scale => 1 << 3,
456-
perl5 => 'my %h; for (0 .. (SCALE - 1)) { %h{$_} = $_ }; while (my ($k, $v) = each %h) { $k == $v }; 1',
457-
perl6 => 'my %h; for ^SCALE { %h{$_} = $_ }; for %h.kv -> $k, $v { $k == $v }; 1',
458+
expected => sub { $_[0] . "\n" },
459+
perl5 => 'my %h; my $m = 0; for (0 .. (SCALE - 1)) { %h{$_} = $_ }; while (my ($k, $v) = each %h) { $m += $k == $v }; say $m',
460+
perl6 => 'my %h; my $m = 0; for ^SCALE { %h{$_} = $_ }; for %h.kv -> $k, $v { $m += $k == $v }; say $m;',
458461
nqp => undef,
459462
},
460463
{

0 commit comments

Comments
 (0)