[Mesa-dev] [PATCH shader-db v2 2/5] nv-report: move code out of main()

Rhys Perry pendingchaos02 at gmail.com
Sun Aug 5 12:06:09 UTC 2018


v2: rename create_totals() to compute_totals()
v2: simplify create_totals()/compute_totals()

Signed-off-by: Rhys Perry <pendingchaos02 at gmail.com>
---
 nv-report.py | 46 ++++++++++++++++++++++++++++++----------------
 1 file changed, 30 insertions(+), 16 deletions(-)

diff --git a/nv-report.py b/nv-report.py
index 3f0be63557..91007625ff 100644
--- a/nv-report.py
+++ b/nv-report.py
@@ -45,8 +45,11 @@ class Stats(object):
     def record(self, name, stat):
         assert name not in self.stats, name
         self.stats[name] = stat
+
+    def compute_totals(self):
         for attr in STATS:
-            setattr(self, attr, getattr(self, attr) + getattr(stat, attr))
+            stats = self.stats.itervalues()
+            setattr(self, attr, sum(getattr(stat, attr) for stat in stats))
 
 RE = {
         "name":   re.compile(r"^(.*) - "),
@@ -54,7 +57,7 @@ RE = {
 for attr in ["type"] + STATS:
     RE[attr] = re.compile(attr + ": (\d+)")
 
-def analyze(fname):
+def read_stats(fname):
     stats = Stats()
     with open(fname, "r") as f:
         for line in f.xreadlines():
@@ -77,19 +80,19 @@ def diff(a, b):
         percentage = float('inf')
     return "%d -> %d (%.2f%%)" % (a, b, percentage)
 
-def main(argv):
-    # Count up each of the metrics in the before and after, and
-    # produce hurt/helped comparisons.
-    before = analyze(argv[1])
-    after = analyze(argv[2])
-    keys = set(before.stats.keys()) | set(after.stats.keys())
+def print_summary(before, after):
+    before.compute_totals()
+    after.compute_totals()
+
+    print "total instructions in shared programs :", diff(before.inst, after.inst)
+    print "total gprs used in shared programs    :", diff(before.gpr, after.gpr)
+    print "total shared used in shared programs  :", diff(before.shared, after.shared)
+    print "total local used in shared programs   :", diff(before.local, after.local)
 
+def print_helped_hurt(keys, before, after):
     helped = Stat()
     hurt = Stat()
     for key in keys:
-        if key not in after.stats or key not in before.stats:
-            print "Missing", key
-            continue
         a = after.stats[key]
         b = before.stats[key]
         if a != b:
@@ -105,11 +108,6 @@ def main(argv):
                     setattr(hurt, attr,
                             getattr(hurt, attr) + 1)
 
-    print "total instructions in shared programs :", diff(before.inst, after.inst)
-    print "total gprs used in shared programs    :", diff(before.gpr, after.gpr)
-    print "total shared used in shared programs  :", diff(before.shared, after.shared)
-    print "total local used in shared programs   :", diff(before.local, after.local)
-    print
     print ("%10s " * (len(STATS) + 1)) % tuple([""] + STATS)
     print "%10s " % "helped",
     for attr in STATS:
@@ -118,6 +116,22 @@ def main(argv):
     print "%10s " % "hurt",
     for attr in STATS:
         print "%10d " % getattr(hurt, attr),
+    print
+
+def main(argv):
+    before = read_stats(argv[1])
+    after = read_stats(argv[2])
+
+    keys = set()
+    for key in set(before.stats.keys()) | set(after.stats.keys()):
+        if key not in after.stats or key not in before.stats:
+            print "Missing", key
+            continue
+        keys.add(key)
+
+    print_summary(before, after)
+    print
+    print_helped_hurt(keys, before, after)
 
 
 if __name__ == "__main__":
-- 
2.14.4



More information about the mesa-dev mailing list