# New Ticket Created by  Justin DeVuyst 
# Please include the string:  [perl #32699]
# in the subject line of all future correspondence about this issue. 
# <URL: http://rt.perl.org:80/rt3/Ticket/Display.html?id=32699 >



This patch will allow all the *.imc and *.pasm benchmarks to be
tested by running make testbench.

There are currently two benchmarks ( hash-utf8.pasm and b6t.imc )
that fail.  The hash-utf8 one looks like broken code but the b6t one
seems to be something with exceptions.  The expected output for both
of those is incorrect.

For the rest I gleaned the expected outputs from running the benches
themselves so if the output is currently wrong then the tests will
be verifying that:)  Any help in realizing better/proper output
would be greatly appreciated.

Justin
--- parrot.bak/config/gen/makefiles/root.in	2004-11-29 19:16:25.000000000 -0500
+++ parrot/config/gen/makefiles/root.in	2004-11-29 20:15:55.000000000 -0500
@@ -1096,6 +1096,10 @@
 mopstest : test_prep
 	$(TEST_PROG) $(TEST_PROG_ARGS) examples/assembly/mops.pasm
 
+# all benchmarks
+testbench: test_prep
+	$(PERL) t/harness t/benchmarks.t
+
 # Running the game of live
 lifetest : test_prep
 	$(TEST_PROG) $(TEST_PROG_ARGS) examples/assembly/life.pasm
--- parrot.bak/t/benchmarks.t	1969-12-31 19:00:00.000000000 -0500
+++ parrot/t/benchmarks.t	2004-11-29 20:23:01.000000000 -0500
@@ -0,0 +1,258 @@
+#! perl
+
+use strict;
+use warnings;
+use Parrot::Test;
+use Test::More;
+
+my %outputs = (
+    q(addit.imc)        => qq(21001097.970000\n),
+    q(addit.pasm)       => qq(21001097.970000\n),
+    q(addit2.imc)       => qq(21001097.970000\n),
+    q(array_access.imc) => qr/^1\s\*\s1000\s=\s1000\n
+        1000\s\*\s1000\s=\s1000000\n
+        Array:\s\d+\.\d+s\n
+        \n
+        1\s\*\s1000\s=\s1000\n
+        1000\s\*\s1000\s=\s1000000\n
+        FixedFloatArray:\s\d+\.\d+s\n
+        \n
+        1\s\*\s1000\s=\s1000\n
+        1000\s\*\s1000\s=\s1000000\n
+        FixedIntegerArray:\s\d+\.\d+s\n
+        \n
+        1\s\*\s1000\s=\s1000\n
+        1000\s\*\s1000\s=\s1000000\n
+        FixedPMCArray:\s\d+\.\d+s\n
+        \n
+        1\s\*\s1000\s=\s1000\n
+        1000\s\*\s1000\s=\s1000000\n
+        FixedStringArray:\s\d+\.\d+s\n
+        \n
+        1\s\*\s1000\s=\s1000\n
+        1000\s\*\s1000\s=\s1000000\n
+        IntList:\s\d+\.\d+s\n
+        \n
+        1\s\*\s1000\s=\s1000\n
+        1000\s\*\s1000\s=\s1000000\n
+        OrderedHash:\s\d+\.\d+s\n
+        \n
+        1\s\*\s1000\s=\s1000\n
+        1000\s\*\s1000\s=\s1000000\n
+        PerlArray:\s\d+\.\d+s\n
+        \n
+        1\s\*\s1000\s=\s1000\n
+        1000\s\*\s1000\s=\s1000000\n
+        PMCArray:\s\d+\.\d+s\n
+        \n
+        1\s\*\s1000\s=\s1000\n
+        1000\s\*\s1000\s=\s1000000\n
+        ResizableFloatArray:\s\d+\.\d+s\n
+        \n
+        1\s\*\s1000\s=\s1000\n
+        1000\s\*\s1000\s=\s1000000\n
+        ResizableIntegerArray:\s\d+\.\d+s\n
+        \n
+        1\s\*\s1000\s=\s1000\n
+        1000\s\*\s1000\s=\s1000000\n
+        ResizablePMCArray:\s\d+\.\d+s\n
+        \n
+        1\s\*\s1000\s=\s1000\n
+        1000\s\*\s1000\s=\s1000000\n
+        ResizableStringArray:\s\d+\.\d+s\n
+        \n
+        1\s\*\s1000\s=\s1000\n
+        1000\s\*\s1000\s=\s1000000\n
+        SArray:\s\d+\.\d+s\n
+        \n
+        1\s\*\s1000\s=\s1000\n
+        1000\s\*\s1000\s=\s1000000\n
+        StringArray:\s\d+\.\d+s\n$/x,
+    q(arriter.imc)    => qq(100000\n100000\n100000\n111111\n),
+    q(arriter_o1.imc) => qq(100000\n100000\n100000\n111111\n),
+    q(b60.imc)        => qq(),
+    q(b61.imc)        => qq(1000041\n),
+    q(b62.imc)        => qq(0\n),
+    q(b63.imc)        => qq(499999500000\n),
+    q(b64.imc)        => qq(0\n),
+    q(b65.imc)        => qq(0\n),
+    q(b6t.imc)        => qq(42 == 42
+        1000041 == 1000041
+        999999 == 999999
+        499999500000 == 499999500000
+        0 == 499999500000),
+    q(bench_newp.pasm) => qr/^\d+\.\d+\sseconds.\s\d+\.\d+\sloops\/sec\n
+        A\stotal\sof\s\d+\sbytes\swere\sallocated\n
+        A\stotal\sof\s\d+\sDOD\sruns\swere\smade\n
+        A\stotal\sof\s\d+\scollection\sruns\swere\smade\n
+        Copying\sa\stotal\sof\s\d+\sbytes\n
+        There\sare\s\d+\sactive\sPMC\sstructs\n
+        There\sare\s\d+\stotal\sPMC\sstructs\n
+        There\sare\s\d+\sactive\sBuffer\sstructs\n
+        There\sare\s\d+\stotal\sBuffer\sstructs\n$/x,
+    q(fib.imc)     => qr/^fib\(28\)\s=\s317811\s\d+\.\d+s$/x,
+    q(freeze.pasm) => qr/^constr.time\s\d+\.\d+\n
+        freeze\stime\s\d+\.\d+\n
+        \s\sthaw\stime\s\d+\.\d+\n
+        Image\slen\s\d+\n
+        PerlArray\s100000\n$/x,
+    q(gc_alloc_new.pasm) => qr/^\d+\.\d+\sseconds\.\n
+        A\stotal\sof\s\d+\sbytes\swere\sallocated\n
+        A\stotal\sof\s\d+\sDOD\sruns\swere\smade\n
+        A\stotal\sof\s\d+\scollection\sruns\swere\smade\n
+        Copying\sa\stotal\sof\s\d+\sbytes\n
+        There\sare\s\d+\sactive\sBuffer\sstructs\n
+        There\sare\s\d+\stotal\sBuffer\sstructs\n$/x,
+    q(gc_alloc_reuse.pasm) => qr/^\d+\.\d+\sseconds\.\n
+        A\stotal\sof\s\d+\sbytes\swere\sallocated\n
+        A\stotal\sof\s\d+\sDOD\sruns\swere\smade\n
+        A\stotal\sof\s\d+\scollection\sruns\swere\smade\n
+        Copying\sa\stotal\sof\s\d+\sbytes\n
+        There\sare\s\d+\sactive\sBuffer\sstructs\n
+        There\sare\s\d+\stotal\sBuffer\sstructs\n$/x,
+    q(gc_generations.pasm) => qr/^\d+\.\d+\sseconds\.\n
+        A\stotal\sof\s\d+\sbytes\swere\sallocated\n
+        A\stotal\sof\s\d+\sDOD\sruns\swere\smade\n
+        A\stotal\sof\s\d+\scollection\sruns\swere\smade\n
+        Copying\sa\stotal\sof\s\d+\sbytes\n
+        There\sare\s\d+\sactive\sBuffer\sstructs\n
+        There\sare\s\d+\stotal\sBuffer\sstructs\n$/x,
+    q(gc_header_new.pasm) => qr/^\d+\.\d+\sseconds\.\n
+        A\stotal\sof\s\d+\sbytes\swere\sallocated\n
+        A\stotal\sof\s\d+\sDOD\sruns\swere\smade\n
+        A\stotal\sof\s\d+\scollection\sruns\swere\smade\n
+        Copying\sa\stotal\sof\s\d+\sbytes\n
+        There\sare\s\d+\sactive\sBuffer\sstructs\n
+        There\sare\s\d+\stotal\sBuffer\sstructs\n$/x,
+    q(gc_header_reuse.pasm) => qr/^\d+\.\d+\sseconds\.\n
+        A\stotal\sof\s\d+\sbytes\swere\sallocated\n
+        A\stotal\sof\s\d+\sDOD\sruns\swere\smade\n
+        A\stotal\sof\s\d+\scollection\sruns\swere\smade\n
+        Copying\sa\stotal\sof\s\d+\sbytes\n
+        There\sare\s\d+\sactive\sBuffer\sstructs\n
+        There\sare\s\d+\stotal\sBuffer\sstructs\n$/x,
+    q(gc_waves_headers.pasm) => qr/^\d+\.\d+\sseconds\.\n
+        A\stotal\sof\s\d+\sbytes\swere\sallocated\n
+        A\stotal\sof\s\d+\sDOD\sruns\swere\smade\n
+        A\stotal\sof\s\d+\scollection\sruns\swere\smade\n
+        Copying\sa\stotal\sof\s\d+\sbytes\n
+        There\sare\s\d+\sactive\sBuffer\sstructs\n
+        There\sare\s\d+\stotal\sBuffer\sstructs\n$/x,
+    q(gc_waves_sizeable_data.pasm) => qr/^\d+\.\d+\sseconds\.\n
+        A\stotal\sof\s\d+\sbytes\swere\sallocated\n
+        A\stotal\sof\s\d+\sDOD\sruns\swere\smade\n
+        A\stotal\sof\s\d+\scollection\sruns\swere\smade\n
+        Copying\sa\stotal\sof\s\d+\sbytes\n
+        There\sare\s\d+\sactive\sBuffer\sstructs\n
+        There\sare\s\d+\stotal\sBuffer\sstructs\n$/x,
+    q(gc_waves_sizeable_headers.pasm) => qr/^\d+\.\d+\sseconds\.\n
+        A\stotal\sof\s\d+\sbytes\swere\sallocated\n
+        A\stotal\sof\s\d+\sDOD\sruns\swere\smade\n
+        A\stotal\sof\s\d+\scollection\sruns\swere\smade\n
+        Copying\sa\stotal\sof\s\d+\sbytes\n
+        There\sare\s\d+\sactive\sBuffer\sstructs\n
+        There\sare\s\d+\stotal\sBuffer\sstructs\n$/x,
+    q(hash-utf8.pasm) => qq(???),
+    q(mops.pasm)      => qr/^Iterations:\s\s\s\s10000000\n
+        Estimated\sops:\s20000000\n
+        done\n
+        Elapsed\stime:\s\s\d+\.\d+\n
+        M\sop\/s:\s\s\s\s\s\s\s\s\d+\.\d+\n$/x,
+    q(oo1-prop.pasm) => qq(10\n),
+    q(oo1.pasm)      => qq(10\n),
+    q(oo2-prop.pasm) => qq(),
+    q(oo2.pasm)      => qq(10\n),
+    q(oo3.pasm)      => qq(10\n),
+    q(oo4.pasm)      => qq(500000\n),
+    q(oo5.imc)       => qq(10\n),
+    q(oo6.imc)       => qq(500000\n),
+    q(oofib.imc)     => qr/^fib\(28\)\s=\s317811\s\d+\.\d+s$/x,
+    q(overload.imc)  => qq(42\n),
+    q(primes.pasm)   => qr/^N\sprimes\sup\sto\s10000\sis:\s1229\n
+        last\sis:\s10001\n
+        Elapsed\stime:\s\d+\.\d+\n$/x,
+    q(primes2.pasm) => qr/^N\sprimes\scalculated\sto\s5000\sis\s670\n
+        last\sis:\s4999\n$/x,
+    q(primes2_i.pasm) => qr/^N\sprimes\scalculated\sto\s10000\s
+        is\s1230\nlast\sis:\s9973\n$/x,
+    q(primes_i.pasm) => qr/^N\sprimes\sup\sto\s10000\sis:\s1229\n
+        last\sis:\s9973\nElapsed\stime:\s\d+\.\d+\n$/x,
+    q(shared_ref.pasm) => qq(),
+    q(stress.pasm)     => qr/^A\stotal\sof\s\d+\sDOD\sruns\s
+        were\smade\n$/x,
+    q(stress1.pasm) => qr/^\d+\.\d+\n
+        A\stotal\sof\s\d+\sDOD\sruns\swere\smade\n
+        \d+\.\d+\n
+        A\stotal\sof\s\d+\sDOD\sruns\swere\smade\n
+        \d+\.\d+\n
+        A\stotal\sof\s\d+\sDOD\sruns\swere\smade\n
+        \d+\.\d+\n
+        A\stotal\sof\s\d+\sDOD\sruns\swere\smade\n
+        \d+\.\d+\n
+        A\stotal\sof\s\d+\sDOD\sruns\swere\smade\n
+        \d+\.\d+\n
+        A\stotal\sof\s\d+\sDOD\sruns\swere\smade\n
+        \d+\.\d+\n
+        A\stotal\sof\s\d+\sDOD\sruns\swere\smade\n
+        \d+\.\d+\n
+        A\stotal\sof\s\d+\sDOD\sruns\swere\smade\n
+        \d+\.\d+\n
+        A\stotal\sof\s\d+\sDOD\sruns\swere\smade\n
+        \d+\.\d+\n
+        A\stotal\sof\s\d+\sDOD\sruns\swere\smade\n$/x,
+    q(stress2.pasm) => qq(),
+    q(stress3.pasm) => qr/^A\stotal\sof\s\d+\sDOD\sruns\swere\smade\n
+        \d+\sactive\sPMCs\n
+        \d+\stotal\s\sPMCs\n$/x,
+    q(vpm.imc) => qq(100000\nl hackerjust another per\n)
+);
+
+my %filters = ( q(array_access.imc) => \&array_access_imc_filter );
+
+sub array_access_imc_filter {
+    $_[ 0 ] =~ s/arr_size = S1/arr_size = 1000/;
+}
+
+plan tests => scalar keys %outputs;
+
+foreach ( sort keys %outputs ) {
+  SKIP: {
+        my $bench;
+        eval {
+            my $file = q(examples/benchmarks/) . $_;
+            open( BENCH, qq(examples/benchmarks/$_) )
+              or die qq(Couldn't open $_:  $!.\n);
+            while ( my $line = <BENCH> ) { $bench .= $line; } 
+            close( BENCH );
+
+            if ( exists $filters{ $_ } ) {
+                &{ $filters{ $_ } }( $bench );
+            }
+        };
+        skip( $@, 1 ) if $@;
+
+        if ( ref $outputs{ $_ } eq q(Regexp) ) {
+            if ( /\.pasm$/ ) {
+                output_like( $bench, $outputs{ $_ }, $_ );
+            }
+            elsif ( /\.imc$/ ) {
+                pir_output_like( $bench, $outputs{ $_ }, $_ );
+            }
+            else {
+                skip( qq(Unknown file type:  $_.), 1 );
+            }
+        }
+        else {
+            if ( /\.pasm$/ ) {
+                output_is( $bench, $outputs{ $_ }, $_ );
+            }
+            elsif ( /\.imc$/ ) {
+                pir_output_is( $bench, $outputs{ $_ }, $_ );
+            }
+            else {
+                skip( qq(Unknown file type:  $_.), 1 );
+            }
+        }
+    }
+}
+

Reply via email to