Skip to content

Commit 8688296

Browse files
authored
Make the output of --compare nicer (#512)
- Space out the names properly instead of relying on tabs - Add a decimal point to the percentage - Filter out NS benchmarks from the comparison - Sort comparisons by amount of improvement/regression (by s, not % beceause we have lots of variance + low runtime benchmarks)
1 parent 93b569d commit 8688296

File tree

1 file changed

+18
-11
lines changed

1 file changed

+18
-11
lines changed

Sources/RegexBenchmark/BenchmarkRunner.swift

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -150,24 +150,31 @@ extension BenchmarkRunner {
150150
(compareFile, compareResult) = try fetchLatestResult()
151151
}
152152

153-
let diff = results.compare(with: compareResult)
153+
let diff = results
154+
.compare(with: compareResult)
155+
.filter({(name, _) in !name.contains("_NS")})
156+
.sorted(by: {(a,b) in a.1 < b.1})
154157
let regressions = diff.filter({(_, change) in change.seconds > 0})
155158
let improvements = diff.filter({(_, change) in change.seconds < 0})
156159

157160
print("Comparing against benchmark result file \(compareFile)")
158-
print("=== Regressions ====================================================")
161+
print("=== Regressions ======================================================================")
162+
func printComparison(name: String, diff: Time) {
163+
let oldVal = compareResult.results[name]!
164+
let newVal = results.results[name]!
165+
let percentage = (1000 * diff.seconds / oldVal.seconds).rounded()/10
166+
let len = max(40 - name.count, 1)
167+
let nameSpacing = String(repeating: " ", count: len)
168+
print("- \(name)\(nameSpacing)\(newVal)\t\(oldVal)\t\(diff)\t\t\(percentage)%")
169+
}
170+
159171
for item in regressions {
160-
let oldVal = compareResult.results[item.key]!
161-
let newVal = results.results[item.key]!
162-
let percentage = item.value.seconds / oldVal.seconds
163-
print("- \(item.key)\t\t\(newVal)\t\(oldVal)\t\(item.value)\t\((percentage * 100).rounded())%")
172+
printComparison(name: item.key, diff: item.value)
164173
}
165-
print("=== Improvements ====================================================")
174+
175+
print("=== Improvements =====================================================================")
166176
for item in improvements {
167-
let oldVal = compareResult.results[item.key]!
168-
let newVal = results.results[item.key]!
169-
let percentage = item.value.seconds / oldVal.seconds
170-
print("- \(item.key)\t\t\(newVal)\t\(oldVal)\t\(item.value)\t\((percentage * 100).rounded())%")
177+
printComparison(name: item.key, diff: item.value)
171178
}
172179
}
173180
}

0 commit comments

Comments
 (0)