diff options
Diffstat (limited to 'stm32/unittest/lib/python/sum_profiles.py')
| -rwxr-xr-x | stm32/unittest/lib/python/sum_profiles.py | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/stm32/unittest/lib/python/sum_profiles.py b/stm32/unittest/lib/python/sum_profiles.py new file mode 100755 index 0000000..19eea13 --- /dev/null +++ b/stm32/unittest/lib/python/sum_profiles.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python3 +""" sum_profiles """ + +def sum_profiles(fin, frames): + data = {} + total_time = 0.0 + active = False + + for line in fin: + if (not active): active = line.startswith("Start Profile Data") + elif line.startswith("End Profile Data"): active = False + else: + words = line.strip().split() + if (len(words) == 3): + part = words[0] + time_str = words[1] + time = float(time_str) + total_time += time + if (not part in data): data[part] = 0.0 + data[part] += time + # end else + # end for line + + data_sorted = [(p, data[p]) for p in sorted(data, key=data.get, reverse=True)] + + print("Total time = {:.1f} ms".format(total_time)) + if (frames): + print("{:.1f} ms per frame".format(total_time / frames)) + print("") + + for part, time in data_sorted: + percent = int(100*(time / total_time)) + print('{:2d}% - {:10.3f} - {}'.format(percent, time, part)) + + return(data) + # end sum_profiles() + + +######################################## +if __name__ == "__main__": + import argparse + + #### Options + argparser = argparse.ArgumentParser() + argparser.add_argument("-f", "--frames", action="store", type=int, default=0, + help="Number of frames") + argparser.add_argument("file", metavar="FILE", help="file to read") + args = argparser.parse_args() + + fin = open(args.file, "r") + sum_profiles(fin, args.frames) |
