[pypy-svn] r57996 - in pypy/branch/cross-compilation/pypy/translator/benchmark: . test

fijal at codespeak.net fijal at codespeak.net
Tue Sep 9 12:22:26 CEST 2008


Author: fijal
Date: Tue Sep  9 12:22:24 2008
New Revision: 57996

Added:
   pypy/branch/cross-compilation/pypy/translator/benchmark/microbench_mem.py   (contents, props changed)
Modified:
   pypy/branch/cross-compilation/pypy/translator/benchmark/bench_mem.py
   pypy/branch/cross-compilation/pypy/translator/benchmark/test/test_bench_mem.py
Log:
Add some microbenchmarks


Modified: pypy/branch/cross-compilation/pypy/translator/benchmark/bench_mem.py
==============================================================================
--- pypy/branch/cross-compilation/pypy/translator/benchmark/bench_mem.py	(original)
+++ pypy/branch/cross-compilation/pypy/translator/benchmark/bench_mem.py	Tue Sep  9 12:22:24 2008
@@ -111,7 +111,7 @@
 
 def measure(measure_func, funcs_to_run):
     results = []
-    for func in funcs_to_run:
+    for num, func in enumerate(funcs_to_run):
         if isinstance(func, tuple):
             read, write, pid = run_cooperative(*func)
         else:
@@ -122,7 +122,7 @@
             if res == 'e':
                 break
             else:
-                elem.append(measure_func(pid))
+                elem.append(measure_func(num, pid))
                 write('x')
         results.append(elem)
     return results

Added: pypy/branch/cross-compilation/pypy/translator/benchmark/microbench_mem.py
==============================================================================
--- (empty file)
+++ pypy/branch/cross-compilation/pypy/translator/benchmark/microbench_mem.py	Tue Sep  9 12:22:24 2008
@@ -0,0 +1,63 @@
+#!/usr/bin/env python
+import autopath
+""" This file attempts to measure how much memory is taken by various objects.
+"""
+
+from pypy.translator.benchmark.bench_mem import measure, smaps_measure_func
+import py
+
+def measure_func(num, pid):
+    res = smaps_measure_func(pid)
+    print num, res.private
+
+def tuples(read, write, coeff):
+    import gc
+    x = ()
+    for i in range(1000 * coeff):
+        x = (x,)
+    gc.collect()
+    write('x')
+    read()
+    write('e')
+
+def linked_list(read, write, coeff):
+    import gc
+
+    class A(object):
+        def __init__(self, other):
+            self.other = other
+
+    x = None
+    for i in range(1000 * coeff):
+        x = A(x)
+    gc.collect()
+    write('x')
+    read()
+    write('e')
+
+def list_of_instances_with_int(read, write, coeff):
+    import gc
+
+    class A(object):
+        def __init__(self, x):
+            self.x = x
+
+    x = [A(i) for i in range(1000 * coeff)]
+    gc.collect()
+    write('x')
+    read()
+    write('e')
+
+if __name__ == '__main__':
+    coeff = 1
+    i = 0
+    funcs = []
+    while i < 10:
+        f = py.code.Source(list_of_instances_with_int, """
+        def f(r, w):
+            list_of_instances_with_int(r, w, %d)
+        """ % coeff)
+        funcs.append((f, 'f'))
+        coeff *= 2
+        i += 1
+    res = measure(measure_func, funcs)

Modified: pypy/branch/cross-compilation/pypy/translator/benchmark/test/test_bench_mem.py
==============================================================================
--- pypy/branch/cross-compilation/pypy/translator/benchmark/test/test_bench_mem.py	(original)
+++ pypy/branch/cross-compilation/pypy/translator/benchmark/test/test_bench_mem.py	Tue Sep  9 12:22:24 2008
@@ -42,7 +42,7 @@
         read()
         write('e')
 
-    def measure(arg):
+    def measure(arg1, arg):
         return 42
 
     measurments = bench_mem.measure(measure, [f1, f1])



More information about the Pypy-commit mailing list