Skip to content

Commit 3f93e31

Browse files
committed
[benchmark] Override all_samples on merged results
To save on memory used by merged `PerformanceTestResult`s, the rarely used `PerformanceTestSample.all_samples` can gather the samples on demand from the result’s `independent_runs` instead of keeping another copy.
1 parent 7d25484 commit 3f93e31

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

benchmark/scripts/compare_perf_tests.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ def __init__(self, name, samples=None, num_iters=None):
5858
self.mean = 0.0
5959
self.S_runtime = 0.0 # For computing running variance
6060
if samples:
61+
self._override_all_samples = None
6162
self._all_samples = samples
6263
ascending = sorted(samples)
6364
self.samples = samples if samples == ascending else ascending
@@ -114,7 +115,8 @@ def num_samples(self):
114115
@property
115116
def all_samples(self):
116117
"""List of all samples in original order."""
117-
return self._all_samples
118+
return (self._all_samples if not self._override_all_samples else
119+
self._override_all_samples())
118120

119121
@property
120122
def min(self):
@@ -282,14 +284,19 @@ def merge(self, r):
282284
self.independent_runs.append(r.samples)
283285
else:
284286
self.independent_runs = [self.samples, r.samples]
287+
285288
outliers = self.samples.outliers + r.samples.outliers
286-
all_samples = self.samples.all_samples + r.samples.all_samples
287289
self.samples = PerformanceTestSamples(
288290
self.name, sorted(self.samples.samples + r.samples.samples))
289291
sams = self.samples
292+
293+
def all_samples():
294+
return [s for samples in self.independent_runs
295+
for s in samples.all_samples]
296+
297+
sams._override_all_samples = all_samples
290298
self.num_samples += r.num_samples
291299
sams.outliers = outliers
292-
sams._all_samples = all_samples
293300
self.min, self.max, self.median, self.mean, self.sd = \
294301
sams.min, sams.max, sams.median, sams.mean, sams.sd
295302
else:

0 commit comments

Comments
 (0)