[pypy-commit] extradoc extradoc: - adapt to 64 bit
cfbolz
noreply at buildbot.pypy.org
Fri Jul 27 11:31:54 CEST 2012
Author: Carl Friedrich Bolz <cfbolz at gmx.de>
Branch: extradoc
Changeset: r4382:17ccc21651f4
Date: 2012-07-27 10:04 +0200
http://bitbucket.org/pypy/extradoc/changeset/17ccc21651f4/
Log: - adapt to 64 bit
- enable handling of setfields
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,7 +1,8 @@
import sys
from collections import defaultdict
-word_to_kib = 1024 / 4.
+word_to_kib = 1024 / 8. # 64 bit
+numberings_per_word = 2/8. # two bytes
def cond_incr(d, key, obj, seen, incr=1):
if obj not in seen:
@@ -28,7 +29,7 @@
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
+ size = line.count("(") * numberings_per_word + 3 # gc, len, prev
cond_incr(results, "optimal_numbering", content, seen_numbering, size)
cond_incr(results, "size_estimate_numbering", address, seen, size)
elif line.startswith("const "):
@@ -37,20 +38,30 @@
elif "info" in line:
_, address = line.split(" at ")
if line.startswith("varrayinfo"):
- factor = 0.5
+ factor = numberings_per_word
elif line.startswith("virtualinfo") or line.startswith("vstructinfo") or line.startswith("varraystructinfo"):
- factor = 1.5
+ factor = 1 + numberings_per_word # one descr reference per entry
naive_factor = factor
if address in seen:
factor = 0
else:
results['num_virtuals'] += 1
+ results['size_virtuals'] += 1 # an entry in the list of virtuals
results['naive_num_virtuals'] += 1
+ results['naive_size_virtuals'] += 1 # an entry in the list of virtuals
+ target = "size_virtuals"
+ naive_target = "naive_size_virtuals"
cond_incr(results, "size_virtuals", address, seen, 4) # bit of a guess
+ elif "pending setfields" == line.strip():
+ results['size_setfields'] += 3 # reference to object, gc, len
+ factor = 3 # descr, index, numbering from, numbering to (plus alignment)
+ naive_factor = 0
+ target = "size_setfields"
+ naive_target = "naive_size_setfields" # dummy
elif line[0] == "\t":
- results["size_virtuals"] += factor
- results["naive_size_virtuals"] += naive_factor
+ results[target] += factor
+ results[naive_target] += naive_factor
kib_snapshots = results['num_snapshots'] * 4. / word_to_kib # gc, jitcode, pc, prev
naive_kib_snapshots = results['naive_num_snapshots'] * 4. / word_to_kib
@@ -60,6 +71,7 @@
naive_kib_consts = results['naive_num_consts'] * 4 / word_to_kib
kib_virtuals = results['size_virtuals'] / word_to_kib
naive_kib_virtuals = results['naive_size_virtuals'] / word_to_kib
+ kib_setfields = results['size_setfields'] / 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)
@@ -67,9 +79,10 @@
print "consts: %sKiB vs %sKiB" % (kib_consts, naive_kib_consts)
print "virtuals: %sKiB vs %sKiB" % (kib_virtuals, naive_kib_virtuals)
print "number virtuals: %i vs %i" % (results['num_virtuals'], results['naive_num_virtuals'])
+ print "setfields: %sKiB" % (kib_setfields, )
print "--"
- print "total: %sKiB vs %sKiB" % (kib_snapshots+kib_numbering+kib_consts+kib_virtuals,
- naive_kib_snapshots+naive_kib_numbering+naive_kib_consts+naive_kib_consts)
+ print "total: %sKiB vs %sKiB" % ( kib_snapshots + kib_numbering + kib_consts + kib_virtuals + kib_setfields,
+ naive_kib_snapshots + naive_kib_numbering + naive_kib_consts + naive_kib_virtuals + kib_setfields)
if __name__ == '__main__':
More information about the pypy-commit
mailing list