[pypy-svn] r70682 - in pypy/benchmarks: . shootout

fijal at codespeak.net fijal at codespeak.net
Mon Jan 18 14:21:44 CET 2010


Author: fijal
Date: Mon Jan 18 14:21:43 2010
New Revision: 70682

Modified:
   pypy/benchmarks/benchmarks.py
   pypy/benchmarks/shootout/fannkuch.py
   pypy/benchmarks/shootout/spectral-norm.py
Log:
Add two more benchmarks. Two more (fasta and binary-trees) needs a bit of
thinking


Modified: pypy/benchmarks/benchmarks.py
==============================================================================
--- pypy/benchmarks/benchmarks.py	(original)
+++ pypy/benchmarks/benchmarks.py	Mon Jan 18 14:21:43 2010
@@ -17,5 +17,6 @@
 
     d[BM.func_name] = BM
 
-for name in ['float', 'nbody_modified', 'meteor-contest']:
+for name in ['float', 'nbody_modified', 'meteor-contest', 'fannkuch',
+             'spectral-norm']:
     _register_new_bm(name, globals())

Modified: pypy/benchmarks/shootout/fannkuch.py
==============================================================================
--- pypy/benchmarks/shootout/fannkuch.py	(original)
+++ pypy/benchmarks/shootout/fannkuch.py	Mon Jan 18 14:21:43 2010
@@ -5,6 +5,10 @@
 # contributed by Sokolov Yura
 # modified by Tupteq
 
+import optparse
+import time
+import util
+
 def fannkuch(n):
     count = range(1, n+1)
     max_flips = 0
@@ -18,7 +22,7 @@
 
     while 1:
         if check < 30:
-            print "".join(str(i+1) for i in perm1)
+            #print "".join(str(i+1) for i in perm1)
             check += 1
 
         while r != 1:
@@ -46,10 +50,22 @@
         else:
             return max_flips
 
+DEFAULT_ARG = 9
+
 def main(n):
-    print "Pfannkuchen(%d) = %d\n" % (n, fannkuch(n)),
+    times = []
+    for i in range(n):
+        t0 = time.time()
+        fannkuch(DEFAULT_ARG)
+        tk = time.time()
+        times.append(tk - t0)
+    return times
+    
+if __name__ == "__main__":
+    parser = optparse.OptionParser(
+        usage="%prog [options]",
+        description="Test the performance of the Float benchmark")
+    util.add_standard_options_to(parser)
+    options, args = parser.parse_args()
 
-if __name__=="__main__":
-    import sys
-    for i in range(int(sys.argv[2])):
-        main(int(sys.argv[1]))
+    util.run_benchmark(options, options.num_runs, main)

Modified: pypy/benchmarks/shootout/spectral-norm.py
==============================================================================
--- pypy/benchmarks/shootout/spectral-norm.py	(original)
+++ pypy/benchmarks/shootout/spectral-norm.py	Mon Jan 18 14:21:43 2010
@@ -9,7 +9,10 @@
 
 from math            import sqrt
 from itertools       import izip
-from sys             import argv
+import time
+import util
+import itertools
+import optparse
 
 def eval_A (i, j):
     return 1.0 / ((i + j) * (i + j + 1) / 2 + i + 1)
@@ -37,22 +40,32 @@
         partial_sum += eval_A (j, i) * u_j
     return partial_sum
 
-def main():
-    n = int(argv[1])
-    u = [1] * n
+DEFAULT_N = 130
 
-    for dummy in xrange (10):
-        v = eval_AtA_times_u (u)
-        u = eval_AtA_times_u (v)
+def main(n):
+    times = []
+    for i in range(n):
+        t0 = time.time()
+        u = [1] * DEFAULT_N
+
+        for dummy in xrange (10):
+            v = eval_AtA_times_u (u)
+            u = eval_AtA_times_u (v)
+
+        vBv = vv = 0
+
+        for ue, ve in izip (u, v):
+            vBv += ue * ve
+            vv  += ve * ve
+        tk = time.time()
+        times.append(tk - t0)
+    return times
+    
+if __name__ == "__main__":
+    parser = optparse.OptionParser(
+        usage="%prog [options]",
+        description="Test the performance of the Float benchmark")
+    util.add_standard_options_to(parser)
+    options, args = parser.parse_args()
 
-    vBv = vv = 0
-
-    for ue, ve in izip (u, v):
-        vBv += ue * ve
-        vv  += ve * ve
-
-    print "%0.9f" % (sqrt(vBv/vv))
-
-if __name__ == '__main__':
-    for i in range(int(argv[2])):
-        main()
+    util.run_benchmark(options, options.num_runs, main)



More information about the Pypy-commit mailing list