Author: Carl Friedrich Bolz <cfb...@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__': _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit