@@ -12,19 +12,19 @@ Run this script with::
1212
1313And that should output::
1414
15- +------------------------+----------+----------------------+
16- | Metric over 1 run(s) | Mean | Standard Deviation |
17- +========================+==========+======================+
18- | Total Time (seconds) | 1.200 | 0.0 |
19- +------------------------+----------+----------------------+
20- | Maximum Memory | 42.3 MiB | 0 Bytes |
21- +------------------------+----------+----------------------+
22- | Maximum CPU (percent) | 88.1 | 0.0 |
23- +------------------------+----------+----------------------+
24- | Average Memory | 33.9 MiB | 0 Bytes |
25- +------------------------+----------+----------------------+
26- | Average CPU (percent) | 30.5 | 0.0 |
27- +------------------------+----------+----------------------+
15+ +------------------------+---------------------+- ----------+----------------------+
16+ | Metric over 1 run(s) | Run 1 | Mean | Standard Deviation |
17+ +========================+=====================+= ==========+======================+
18+ | Total Time (seconds) | 263.8085448741913 | 263.809 | 0.0 |
19+ +------------------------+---------------------+- ----------+----------------------+
20+ | Maximum Memory | 117.9 MiB | 117.9 MiB | 0 Bytes |
21+ +------------------------+---------------------+- ----------+----------------------+
22+ | Maximum CPU (percent) | 0.2 | 0.2 | 0.0 |
23+ +------------------------+---------------------+- ----------+----------------------+
24+ | Average Memory | 117.5 MiB | 117.5 MiB | 0 Bytes |
25+ +------------------------+---------------------+- ----------+----------------------+
26+ | Average CPU (percent) | 0.07325581395348836 | 0.1 | 0.0 |
27+ +------------------------+---------------------+- ----------+----------------------+
2828
2929
3030The script can also be ran with multiple files:
@@ -33,34 +33,56 @@ The script can also be ran with multiple files:
3333
3434And will have a similar output:
3535
36- +------------------------+----------+----------------------+
37- | Metric over 2 run(s) | Mean | Standard Deviation |
38- +========================+==========+======================+
39- | Total Time (seconds) | 1.155 | 0.0449999570847 |
40- +------------------------+----------+----------------------+
41- | Maximum Memory | 42.5 MiB | 110.0 KiB |
42- +------------------------+----------+----------------------+
43- | Maximum CPU (percent) | 94.5 | 6.45 |
44- +------------------------+----------+----------------------+
45- | Average Memory | 35.6 MiB | 1.7 MiB |
46- +------------------------+----------+----------------------+
47- | Average CPU (percent) | 27.5 | 3.03068181818 |
48- +------------------------+----------+----------------------+
36+ +------------------------+---------------------+---------------------+- ----------+----------------------+
37+ | Metric over 2 run(s) | Run 1 | Run 2 | Mean | Standard Deviation |
38+ +========================+=====================+=====================+= ==========+======================+
39+ | Total Time (seconds) | 263.8085448741913 | 198.05210328102112 | 230.930 | 32.87822079658508 |
40+ +------------------------+---------------------+---------------------+- ----------+----------------------+
41+ | Maximum Memory | 117.9 MiB | 112.4 MiB | 115.2 MiB | 2.7 MiB |
42+ +------------------------+---------------------+---------------------+- ----------+----------------------+
43+ | Maximum CPU (percent) | 0.2 | 0.2 | 0.2 | 0.0 |
44+ +------------------------+---------------------+---------------------+- ----------+----------------------+
45+ | Average Memory | 117.5 MiB | 111.0 MiB | 114.2 MiB | 3.2 MiB |
46+ +------------------------+---------------------+---------------------+- ----------+----------------------+
47+ | Average CPU (percent) | 0.07325581395348836 | 0.09432989690721647 | 0.1 | 0.010537041476864052 |
48+ +------------------------+---------------------+---------------------+- ----------+----------------------+
4949
5050
5151You can also specify the ``--output-format json`` option to print the
5252summary as JSON instead of a pretty printed table::
5353
54+ {
55+ "executions": [
5456 {
55- "total_time": 72.76999998092651,
56- "std_dev_average_memory": 0.0,
57- "std_dev_total_time": 0.0,
58- "average_memory": 56884518.57534247,
59- "std_dev_average_cpu": 0.0,
60- "std_dev_max_memory": 0.0,
61- "average_cpu": 61.19315068493151,
62- "max_memory": 58331136.0
57+ "execution_time": 263.8085448741913,
58+ "average_memory": 123170974.75968993,
59+ "max_memory": 123600896.0,
60+ "average_cpu": 0.07325581395348836,
61+ "max_cpu": 0.2,
62+ "end_time": 1735586030.26786
63+ },
64+ {
65+ "execution_time": 198.05210328102112,
66+ "average_memory": 116410262.43298969,
67+ "max_memory": 117899264.0,
68+ "average_cpu": 0.09432989690721647,
69+ "max_cpu": 0.2,
70+ "end_time": 1735586230.422445
6371 }
72+ ],
73+ "aggregate_stats": {
74+ "execution_time": 230.9303240776062,
75+ "std_dev_execution_time": 32.87822079658508,
76+ "average_memory": 119790618.5963398,
77+ "std_dev_average_memory": 3380356.16335012,
78+ "max_memory": 120750080.0,
79+ "std_dev_max_memory": 2850816.0,
80+ "average_cpu": 0.08379285543035242,
81+ "std_dev_average_cpu": 0.010537041476864052,
82+ "max_cpu": 0.2,
83+ "std_dev_max_cpu": 0.0
84+ }
85+ }
6486
6587"""
6688
@@ -96,7 +118,7 @@ class Summarizer:
96118 self .total_files = 0
97119 self ._num_rows = 0
98120 self ._start_time = None
99- self ._end_time = None
121+ self ._end_times = []
100122 self ._totals = {
101123 'time' : [],
102124 'average_memory' : [],
@@ -168,22 +190,30 @@ class Summarizer:
168190 table = [
169191 [
170192 'Total Time (seconds)' ,
193+ * [f'{ self ._totals ['time' ][file ]} ' for file in range (0 , self .total_files )],
171194 f'{ self .total_time :.3f} ' ,
172195 self .std_dev_total_time ,
173196 ],
174- ['Maximum Memory' , h (self .max_memory ), h (self .std_dev_max_memory )],
197+ [
198+ 'Maximum Memory' ,
199+ * [f'{ h (self ._totals ['max_memory' ][file ])} ' for file in range (0 , self .total_files )],
200+ h (self .max_memory ),
201+ h (self .std_dev_max_memory )],
175202 [
176203 'Maximum CPU (percent)' ,
204+ * [f'{ self ._totals ['max_cpu' ][file ]} ' for file in range (0 , self .total_files )],
177205 f'{ self .max_cpu :.1f} ' ,
178206 self .std_dev_max_cpu ,
179207 ],
180208 [
181209 'Average Memory' ,
210+ * [f'{ h (self ._totals ['average_memory' ][file ])} ' for file in range (0 , self .total_files )],
182211 h (self .average_memory ),
183212 h (self .std_dev_average_memory ),
184213 ],
185214 [
186215 'Average CPU (percent)' ,
216+ * [f'{ self ._totals ['average_cpu' ][file ]} ' for file in range (0 , self .total_files )],
187217 f'{ self .average_cpu :.1f} ' ,
188218 self .std_dev_average_cpu ,
189219 ],
@@ -192,6 +222,7 @@ class Summarizer:
192222 table ,
193223 headers = [
194224 f'Metric over { self .total_files } run(s)' ,
225+ * [f'Run { n } ' for n in range (1 , self .total_files + 1 )],
195226 'Mean' ,
196227 'Standard Deviation' ,
197228 ],
@@ -205,14 +236,28 @@ class Summarizer:
205236 """
206237 return json .dumps (
207238 {
208- 'total_time' : self .total_time ,
209- 'std_dev_total_time' : self .std_dev_total_time ,
210- 'max_memory' : self .max_memory ,
211- 'std_dev_max_memory' : self .std_dev_max_memory ,
212- 'average_memory' : self .average_memory ,
213- 'std_dev_average_memory' : self .std_dev_average_memory ,
214- 'average_cpu' : self .average_cpu ,
215- 'std_dev_average_cpu' : self .std_dev_average_cpu ,
239+ 'executions' : [
240+ {
241+ 'execution_time' : self ._totals ['time' ][file ],
242+ 'average_memory' : self ._totals ['average_memory' ][file ],
243+ 'max_memory' : self ._totals ['max_memory' ][file ],
244+ 'average_cpu' : self ._totals ['average_cpu' ][file ],
245+ 'max_cpu' : self ._totals ['max_cpu' ][file ],
246+ 'end_time' : self ._end_times [file ],
247+ } for file in range (self .total_files )
248+ ],
249+ 'aggregate_stats' : {
250+ 'execution_time' : self .total_time ,
251+ 'std_dev_execution_time' : self .std_dev_total_time ,
252+ 'average_memory' : self .average_memory ,
253+ 'std_dev_average_memory' : self .std_dev_average_memory ,
254+ 'max_memory' : self .max_memory ,
255+ 'std_dev_max_memory' : self .std_dev_max_memory ,
256+ 'average_cpu' : self .average_cpu ,
257+ 'std_dev_average_cpu' : self .std_dev_average_cpu ,
258+ 'max_cpu' : self .max_cpu ,
259+ 'std_dev_max_cpu' : self .std_dev_max_cpu ,
260+ }
216261 },
217262 indent = 2 ,
218263 )
@@ -232,7 +277,7 @@ class Summarizer:
232277 self ._validate_row (row , benchmark_file )
233278 self .process_data_row (row )
234279 self ._validate_row (row , benchmark_file )
235- self ._end_time = self ._get_time (row )
280+ self ._end_times . append ( self ._get_time (row ) )
236281 self ._finalize_processed_data_for_file ()
237282
238283 def _validate_row (self , row , filename ):
@@ -261,7 +306,7 @@ class Summarizer:
261306 def _finalize_processed_data_for_file (self ):
262307 # Add numbers to the total, which keeps track of data over
263308 # all files provided.
264- self ._totals ['time' ].append (self ._end_time - self ._start_time )
309+ self ._totals ['time' ].append (self ._end_times [ - 1 ] - self ._start_time )
265310 self ._totals ['max_cpu' ].append (self ._maximums ['cpu' ])
266311 self ._totals ['max_memory' ].append (self ._maximums ['memory' ])
267312 self ._totals ['average_cpu' ].append (
0 commit comments