Author: Anton Gulenko <anton.gule...@googlemail.com>
Branch: storage
Changeset: r803:0f7c80f95960
Date: 2014-05-06 18:53 +0200
http://bitbucket.org/pypy/lang-smalltalk/changeset/0f7c80f95960/

Log:    Fixed storage statistics, made compile under RPython.

diff --git a/spyvm/storage_statistics.py b/spyvm/storage_statistics.py
--- a/spyvm/storage_statistics.py
+++ b/spyvm/storage_statistics.py
@@ -119,13 +119,16 @@
         operations_map[key_type] = operations_map[key_type] + 1
         elements_map[key_type] = elements_map[key_type] + size
     
-    def print_result(self):
+    def print_results(self):
         print "Storage Statistics (dot format):"
         print "================================"
+        print "*/" # End the commend started in activate_statistics()
         print self.dot_string()
     
     def dot_string(self):
-               # Unfortunately, this is pretty complicated and messy... Sorry.
+        # Return a string that is valid dot code and can be parsed by the 
graphviz dot utility.
+        # Unfortunately, this is pretty complicated and messy... Sorry.
+        
         result = "digraph G {"
         result += "loading_image [label=\"Image Loading\",shape=box];"
         result += "created_object [label=\"Object Creation\",shape=box];"
@@ -139,7 +142,7 @@
                 source_node = key[1]
                 percent_ops = float(operations) / 
float(self.incoming_operations[source_node]) * 100
                 percent_elements = float(elements) / 
float(self.incoming_elements[source_node]) * 100
-                label_suffix = "\n%0.2f%% objects\n%0.2f%% elements" % 
(percent_ops, percent_elements)
+                label_suffix = "\n%d%% objects\n%d%% elements" % 
(int(percent_ops), int(percent_elements))
             elif operation_type == "Initialized":
                 source_node = "created_object"
             elif operation_type == "Filledin":
@@ -147,7 +150,7 @@
             else:
                 print "Could not handle storage operation %s" % operation_type
                 continue
-            result += "%s -> %s [label=\"%d (avg %0.2f)%s\"];" % (source_node, 
target_node, operations, float(elements)/float(operations), label_suffix)
+            result += "%s -> %s [label=\"%d objects\n%d elements per 
object%s\"];" % (source_node, target_node, operations, elements/operations, 
label_suffix)
         for type in self.incoming_operations:
             incoming_ops = self.incoming_operations[type]
             incoming_els = self.incoming_elements[type]
@@ -159,8 +162,10 @@
             else:
                 remaining_ops = incoming_ops
                 remaining_els = incoming_els
-            label += "\nRemaining objects: %d (%0.2f%%)" % (remaining_ops, 
float(remaining_ops)/incoming_ops*100)
-            label += "\nRemaining elements: %d (%0.2f%%)" % (remaining_els, 
float(remaining_els)/incoming_els*100)
+            percent_remaining_ops = float(remaining_ops) / incoming_ops * 100
+            percent_remaining_els = float(remaining_els) / incoming_els * 100
+            label += "\nRemaining objects: %d (%d%%)" % (remaining_ops, 
int(percent_remaining_ops))
+            label += "\nRemaining elements: %d (%d%%)" % (remaining_els, 
int(percent_remaining_els))
             result += "%s [label=\"%s%s\"];" % (type, type, label)
         result += "}"
         return result
@@ -192,6 +197,8 @@
         _stats.add_module(_detailedcollector)
     if dot:
         _stats.add_module(_dotcollector)
+        # Start a comment in order to make the entire output valid dot code. 
Hack.
+        print "/*"
 
 def print_statistics():
     _stats.print_results()
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to