Signed-off-by: Rhys Perry <pendingchao...@gmail.com> --- nv-report.py | 49 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 16 deletions(-)
diff --git a/nv-report.py b/nv-report.py index 3f0be63557..487074fdd6 100644 --- a/nv-report.py +++ b/nv-report.py @@ -45,8 +45,14 @@ class Stats(object): def record(self, name, stat): assert name not in self.stats, name self.stats[name] = stat + + def create_totals(self): for attr in STATS: - setattr(self, attr, getattr(self, attr) + getattr(stat, attr)) + setattr(self, attr, 0) + + for key, stat in self.stats.iteritems(): + for attr in STATS: + setattr(self, attr, getattr(self, attr) + getattr(stat, attr)) RE = { "name": re.compile(r"^(.*) - "), @@ -54,7 +60,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 +83,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.create_totals() + after.create_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 +111,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 +119,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 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev