both look good to me
On Fri, Aug 3, 2018 at 10:20 PM, Ilia Mirkin <imir...@alum.mit.edu> wrote: > On Fri, Aug 3, 2018 at 3:53 PM, Rhys Perry <pendingchao...@gmail.com> wrote: >> 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): > > compute_totals makes more sense to me. > >> 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)) > > Confusing way of doing it, no? > > for attr in STATS: > setattr(self, attr, sum(getattr(stat, attr) for stat in > self.stats.itervalues())) > > should do the trick. > >> >> 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 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev