@@ -115,20 +115,20 @@ extension BenchmarkRunner {
115115 . sorted ( by: { ( a, b) in a. diff!. seconds < b. diff!. seconds} )
116116
117117 print ( " Comparing against \( against) " )
118- print ( " === Regressions ====================================================================== " )
118+ print ( " === Regressions =============================================================== " )
119119 for item in regressions {
120120 print ( item)
121121 }
122122
123- print ( " === Improvements ===================================================================== " )
123+ print ( " === Improvements ============================================================== " )
124124 for item in improvements {
125125 print ( item)
126126 }
127127
128128 #if os(macOS) && canImport(Charts)
129129 if showChart {
130130 print ( """
131- === Comparison chart =================================================================
131+ === Comparison chart ==========================================================
132132 Press Control-C to close...
133133 """ )
134134 BenchmarkResultApp . comparisons = comparisons
@@ -234,9 +234,17 @@ extension BenchmarkResult {
234234 return " - \( name) N/A "
235235 }
236236 let percentage = ( 1000 * diff. seconds / baselineTime. seconds) . rounded ( ) / 10
237- let len = max ( 40 - name. count, 1 )
238- let nameSpacing = String ( repeating: " " , count: len)
239- return " - \( name) \( nameSpacing) \( latestTime) \t \( baselineTime) \t \( diff) \t \t \( percentage) % "
237+ let start = if name. count > 40 {
238+ " - \( name) \n " + String( repeating: " " , count: 43 )
239+ } else {
240+ " - \( name, paddingTo: 40 ) "
241+ }
242+ return start + """
243+ \( latestTime, paddingTo: 8 , alignRight: true ) \
244+ \( baselineTime, paddingTo: 8 , alignRight: true ) \
245+ \( diff, paddingTo: 8 , alignRight: true ) \
246+ \( percentage, paddingTo: 5 , alignRight: true ) %
247+ """
240248 }
241249
242250 var asCsv : String {
@@ -334,3 +342,16 @@ extension SuiteResult: Codable {
334342 return try decoder. decode ( SuiteResult . self, from: data)
335343 }
336344}
345+
346+ extension DefaultStringInterpolation {
347+ mutating func appendInterpolation< T> ( _ value: T , paddingTo length: Int , alignRight: Bool = false ) {
348+ let s = String ( describing: value)
349+ let paddingCount = max ( 0 , length - s. count)
350+ let padding = String ( repeating: " " , count: paddingCount)
351+ if alignRight {
352+ appendLiteral ( padding + s)
353+ } else {
354+ appendLiteral ( s + padding)
355+ }
356+ }
357+ }
0 commit comments