Quoting Ian Romanick (2018-01-16 09:39:07)
> On 01/12/2018 12:23 PM, Dylan Baker wrote:
> > Quoting Ian Romanick (2018-01-12 12:06:59)
> >> From: Ian Romanick <[email protected]>
> >>
> >> This is useful for preparing data to go in a Mesa commit message.
> >>
> >> Signed-off-by: Ian Romanick <[email protected]>
> >> ---
> >>  report.py | 53 +++++++++++++++++++++++++++++++----------------------
> >>  1 file changed, 31 insertions(+), 22 deletions(-)
> >>
> >> diff --git a/report.py b/report.py
> >> index e0068bc..72752c1 100755
> >> --- a/report.py
> >> +++ b/report.py
> >> @@ -62,6 +62,8 @@ def main():
> >>                          help="comma-separated list of measurements to 
> >> report")
> >>      parser.add_argument("--summary-only", "-s", action="store_true", 
> >> default=False,
> >>                          help="do not show the per-shader helped / hurt 
> >> data")
> >> +    parser.add_argument("--changes-only", "-c", action="store_true", 
> >> default=False,
> >> +                        help="only show measurements that have changes")
> >>      parser.add_argument("before", type=get_results, help="the output of 
> >> the original code")
> >>      parser.add_argument("after", type=get_results, help="the output of 
> >> the new code")
> >>      args = parser.parse_args()
> >> @@ -116,14 +118,14 @@ def main():
> >>              if len(helped) > 0:
> >>                  print("")
> >>  
> >> -                hurt.sort(
> >> -                    key=lambda k: args.after[k][m] if args.before[k][m] 
> >> == 0 else float(args.after[k][m] - args.before[k][m]) / args.before[k][m])
> >> -                for p in hurt:
> >> -                    namestr = p[0] + " " + p[1]
> >> -                    print(m + " HURT:   " + get_result_string(
> >> -                        namestr, args.before[p][m], args.after[p][m]))
> >> -                if len(hurt) > 0:
> >> -                    print("")
> >> +            hurt.sort(
> >> +                key=lambda k: args.after[k][m] if args.before[k][m] == 0 
> >> else float(args.after[k][m] - args.before[k][m]) / args.before[k][m])
> >> +            for p in hurt:
> >> +                namestr = p[0] + " " + p[1]
> >> +                print(m + " HURT:   " + get_result_string(
> >> +                    namestr, args.before[p][m], args.after[p][m]))
> >> +            if len(hurt) > 0:
> >> +                print("")
> >>  
> >>          num_helped[m] = len(helped)
> >>          num_hurt[m] = len(hurt)
> >> @@ -153,21 +155,28 @@ def main():
> >>          if len(gained) > 0:
> >>              print("")
> >>  
> >> +    any_helped_or_hurt = False
> >>      for m in args.measurements:
> >> -        print("total {0} in shared programs: {1}\n"
> >> -              "{0} in affected programs: {2}\n"
> >> -              "helped: {3}\n"
> >> -              "HURT: {4}\n".format(
> >> -               m,
> >> -               change(total_before[m], total_after[m]),
> >> -               change(affected_before[m], affected_after[m]),
> >> -               num_helped[m],
> >> -               num_hurt[m]))
> >> -
> >> -
> >> -    print("LOST:   " + str(len(lost)))
> >> -    print("GAINED: " + str(len(gained)))
> >> -
> >> +        if num_helped[m] > 0 or num_hurt[m] > 0:
> >> +            any_helped_or_hurt = True
> >> +
> >> +        if num_helped[m] > 0 or num_hurt[m] > 0 or not args.changes_only:
> > 
> > Couldn't this be: `if any_helped_or_hurt or not args.changes_only:`
> 
> Yes.  I added any_helped_or_hurt long after writing this particular
> if-statement, and I didn't notice the easy refactor. :)
> 
> >> +            print("total {0} in shared programs: {1}\n"
> >> +                  "{0} in affected programs: {2}\n"
> >> +                  "helped: {3}\n"
> >> +                  "HURT: {4}\n".format(
> >> +                     m,
> >> +                     change(total_before[m], total_after[m]),
> >> +                     change(affected_before[m], affected_after[m]),
> >> +                     num_helped[m],
> >> +                     num_hurt[m]))
> >> +
> >> +    if len(lost) > 0 or len(gained) > 0 or not args.changes_only:
> > 
> > Don't use len() for checking if a list has members:
> > `if lost or gained or not args.changes_only:`
> 
> Oh interesting.  There are a few other places in report.py that use 'if
> len(x) != 0', so I'll change those too.

Thanks! It's a lot faster to do `if x` than `if len(x) != 0` in python, since
CPython doesn't do a lot of optimizations for less than optimal code.

> 
> >> +        print("LOST:   " + str(len(lost)))
> >> +        print("GAINED: " + str(len(gained)))
> >> +
> >> +    if args.changes_only and len(lost) == 0 and len(gained) == 0 and not 
> >> any_helped_or_hurt:
> > 
> > same here:
> > `if args.changes_only and not lost and not gained and not 
> > any_helped_or_hurt`:
> > 
> >> +        print("No changes.")
> >>  
> >>  if __name__ == "__main__":
> >>      main()
> >> -- 
> >> 2.9.5
> >>
> >> _______________________________________________
> >> mesa-dev mailing list
> >> [email protected]
> >> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
> 
> 

Attachment: signature.asc
Description: signature

_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to