[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