Author: Carl Friedrich Bolz <[email protected]>
Branch: extradoc
Changeset: r4328:2498bd7a2914
Date: 2012-07-23 14:58 +0200
http://bitbucket.org/pypy/extradoc/changeset/2498bd7a2914/
Log: refactoring
diff --git a/talk/vmil2012/example/rdatasize.py
b/talk/vmil2012/example/rdatasize.py
--- a/talk/vmil2012/example/rdatasize.py
+++ b/talk/vmil2012/example/rdatasize.py
@@ -1,61 +1,51 @@
import sys
+from collections import defaultdict
word_to_kib = 1024 / 4.
+def cond_incr(d, key, obj, seen, incr=1):
+ if obj not in seen:
+ seen.add(obj)
+ d[key] += incr
+ d["naive_" + key] += incr
+
def main(argv):
infile = argv[1]
seen = set()
seen_numbering = set()
# all in words
- num_storages = 0
- num_snapshots = 0
- naive_num_snapshots = 0
- size_estimate_numbering = 0
- naive_estimate_numbering = 0
- optimal_numbering = 0
+ results = defaultdict(float)
size_estimate_virtuals = 0
- num_consts = 0
naive_consts = 0
with file(infile) as f:
for line in f:
if line.startswith("Log storage"):
- num_storages += 1
+ results['num_storages'] += 1
continue
if not line.startswith("\t"):
continue
line = line[1:]
if line.startswith("jitcode/pc"):
_, address = line.split(" at ")
- if address not in seen:
- seen.add(address)
- num_snapshots += 1 # gc, jitcode, pc, prev
- naive_num_snapshots += 1
+ cond_incr(results, "num_snapshots", address, seen)
elif line.startswith("numb"):
content, address = line.split(" at ")
size = line.count("(") / 2.0 + 3 # gc, len, prev
- if content not in seen_numbering:
- seen_numbering.add(content)
- optimal_numbering += size
- if address not in seen:
- seen.add(address)
- size_estimate_numbering += size
- naive_estimate_numbering += size
+ cond_incr(results, "optimal_numbering", content,
seen_numbering, size)
+ cond_incr(results, "size_estimate_numbering", address, seen,
size)
elif line.startswith("const "):
address, _ = line[len("const "):].split("/")
- if address not in seen:
- seen.add(address)
- num_consts += 1
- naive_consts += 1
- kib_snapshots = num_snapshots * 4. / word_to_kib
- naive_kib_snapshots = naive_num_snapshots * 4. / word_to_kib
- kib_numbering = size_estimate_numbering / word_to_kib
- naive_kib_numbering = naive_estimate_numbering / word_to_kib
- kib_consts = num_consts * 4 / word_to_kib
- naive_kib_consts = naive_consts * 4 / word_to_kib
- print "storages:", num_storages
+ cond_incr(results, "num_consts", address, seen)
+ kib_snapshots = results['num_snapshots'] * 4. / word_to_kib # gc, jitcode,
pc, prev
+ naive_kib_snapshots = results['naive_num_snapshots'] * 4. / word_to_kib
+ kib_numbering = results['size_estimate_numbering'] / word_to_kib
+ naive_kib_numbering = results['naive_size_estimate_numbering'] /
word_to_kib
+ kib_consts = results['num_consts'] * 4 / word_to_kib
+ naive_kib_consts = results['naive_num_consts'] * 4 / word_to_kib
+ print "storages:", results['num_storages']
print "snapshots: %sKiB vs %sKiB" % (kib_snapshots, naive_kib_snapshots)
print "numberings: %sKiB vs %sKiB" % (kib_numbering, naive_kib_numbering)
- print "optimal: %s" % (optimal_numbering / word_to_kib)
+ print "optimal: %s" % (results['optimal_numbering'] / word_to_kib)
print "consts: %sKiB vs %sKiB" % (kib_consts, naive_kib_consts)
print "--"
print "total: %sKiB vs %sKiB" % (kib_snapshots+kib_numbering+kib_consts,
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit