Skip to content

Commit be95ce8

Browse files
committed
Update summarize script to include metrics of each iteration.
1 parent 9d6c6c5 commit be95ce8

File tree

1 file changed

+91
-46
lines changed

1 file changed

+91
-46
lines changed

scripts/performance/summarize

Lines changed: 91 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,19 @@ Run this script with::
1212
1313
And 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
3030
The script can also be ran with multiple files:
@@ -33,34 +33,56 @@ The script can also be ran with multiple files:
3333
3434
And 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
5151
You can also specify the ``--output-format json`` option to print the
5252
summary 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

Comments
 (0)