Skip to content

Commit cacb1b2

Browse files
Fix calculation of best ops/sec in benchmarks (#6973)
1 parent 0e17869 commit cacb1b2

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

scripts/ci/e2e_benchmark.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,9 @@ def bootstrap_confidence_interval(data, num_samples=1000, confidence_level=0.95)
8686
mean = np.mean(means)
8787
return mean, lower_bound, upper_bound
8888

89-
def calculate_confidence_interval(data):
89+
def calculate_confidence_interval(data, min_is_best=True):
9090
mean, lower, upper = bootstrap_confidence_interval(data)
91-
min_value = np.min(data)
91+
min_value = np.min(data) if min_is_best else np.max(data)
9292
return mean, (upper - lower) / 2, min_value
9393

9494

@@ -117,7 +117,7 @@ def main():
117117

118118

119119
total_time, total_ci, total_best = calculate_confidence_interval(np.sum(all_times, axis=1))
120-
ops_per_sec, ops_per_sec_ci, ops_per_sec_best = calculate_confidence_interval(float(all_times.shape[1]) / np.sum(all_times / 1000, axis=1))
120+
ops_per_sec, ops_per_sec_ci, ops_per_sec_best = calculate_confidence_interval(float(all_times.shape[1]) / np.sum(all_times / 1000, axis=1), min_is_best=False)
121121
min_time, min_ci, _ = calculate_confidence_interval(np.min(all_times, axis=1))
122122
mean_time, mean_ci, _ = calculate_confidence_interval(np.mean(all_times, axis=1))
123123
median_time, median_ci, _ = calculate_confidence_interval(np.median(all_times, axis=1))

src/benchmarks/bench.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ struct ConfidenceInterval
134134
double mean;
135135
double confidence;
136136
double min;
137+
double max;
137138
};
138139

139140
// Helper function to calculate the bootstrap confidence interval
@@ -161,8 +162,10 @@ ConfidenceInterval confidenceInterval(const std::vector<double> &data,
161162
double upper_bound = means[(int)((1 + confidence_level) / 2 * num_samples)];
162163
double mean = std::accumulate(means.begin(), means.end(), 0.0) / means.size();
163164

164-
ConfidenceInterval ci = {
165-
mean, (upper_bound - lower_bound) / 2, *std::min_element(data.begin(), data.end())};
165+
ConfidenceInterval ci = {mean,
166+
(upper_bound - lower_bound) / 2,
167+
*std::min_element(data.begin(), data.end()),
168+
*std::max_element(data.begin(), data.end())};
166169
return ci;
167170
}
168171

@@ -260,7 +263,7 @@ std::ostream &operator<<(std::ostream &os, Statistics &statistics)
260263
ConfidenceInterval ops_ci = statistics.ops_per_sec();
261264

262265
os << "ops: " << ops_ci.mean << " ± " << ops_ci.confidence << " ops/s. "
263-
<< "best: " << ops_ci.min << "ops/s." << std::endl;
266+
<< "best: " << ops_ci.max << "ops/s." << std::endl;
264267
os << "total: " << total_ci.mean << " ± " << total_ci.confidence << "ms. "
265268
<< "best: " << total_ci.min << "ms." << std::endl;
266269
os << "avg: " << mean_ci.mean << " ± " << mean_ci.confidence << "ms" << std::endl;

0 commit comments

Comments
 (0)