aboutsummaryrefslogtreecommitdiff
path: root/stm32/unittest/scripts/sum_profiles
diff options
context:
space:
mode:
authorAuthor Name <[email protected]>2023-07-07 12:20:59 +0930
committerDavid Rowe <[email protected]>2023-07-07 12:29:06 +0930
commitac7c48b4dee99d4c772f133d70d8d1b38262fcd2 (patch)
treea2d0ace57a9c0e2e5b611c4987f6fed1b38b81e7 /stm32/unittest/scripts/sum_profiles
shallow zip-file copy from codec2 e9d726bf20
Diffstat (limited to 'stm32/unittest/scripts/sum_profiles')
-rw-r--r--stm32/unittest/scripts/sum_profiles45
1 files changed, 45 insertions, 0 deletions
diff --git a/stm32/unittest/scripts/sum_profiles b/stm32/unittest/scripts/sum_profiles
new file mode 100644
index 0000000..706b8a2
--- /dev/null
+++ b/stm32/unittest/scripts/sum_profiles
@@ -0,0 +1,45 @@
+#!/usr/bin/env python3
+""" sum_profiles """
+
+def sum_profiles(fin, frames):
+ data = {}
+ total_time = 0.0
+
+ for line in fin:
+ 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
+
+ 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} per frame".format(total_time / args.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)