[pypy-commit] extradoc extradoc: add virtuals calculation

cfbolz noreply at buildbot.pypy.org
Mon Jul 23 15:17:44 CEST 2012


Author: Carl Friedrich Bolz <cfbolz at gmx.de>
Branch: extradoc
Changeset: r4329:5bf073151c41
Date: 2012-07-23 15:17 +0200
http://bitbucket.org/pypy/extradoc/changeset/5bf073151c41/

Log:	add virtuals calculation

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
@@ -36,20 +36,42 @@
             elif line.startswith("const "):
                 address, _ = line[len("const "):].split("/")
                 cond_incr(results, "num_consts", address, seen)
+            elif "info" in line:
+                _, address = line.split(" at  ")
+                if line.startswith("varrayinfo"):
+                    factor = 0.5
+                elif line.startswith("virtualinfo") or line.startswith("vstructinfo") or line.startswith("varraystructinfo"):
+                    factor = 1.5
+                naive_factor = factor
+                if address in seen:
+                    factor = 0
+                else:
+                    results['num_virtuals'] += 1
+                results['naive_num_virtuals'] += 1
+
+                cond_incr(results, "size_virtuals", address, seen, 4) # bit of a guess
+            elif line[0] == "\t":
+                results["size_virtuals"] += factor
+                results["naive_size_virtuals"] += 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
     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
+    kib_virtuals = results['size_virtuals'] / word_to_kib
+    naive_kib_virtuals = results['naive_size_virtuals'] / 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" % (results['optimal_numbering'] / word_to_kib)
     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 "--"
-    print "total:  %sKiB vs %sKiB" % (kib_snapshots+kib_numbering+kib_consts,
-                                      naive_kib_snapshots+naive_kib_numbering+naive_kib_consts)
+    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)
 
 
 if __name__ == '__main__':


More information about the pypy-commit mailing list