2121 pure : 'JSON (PureRuby)'
2222} . freeze
2323
24+ # Format integer with comma separators for readability
25+ def comma ( n )
26+ n . to_s . reverse . gsub ( /(\d {3})(?=\d )/ , '\\1,' ) . reverse
27+ end
28+
2429options = { write_report : WRITE_REPORT_DEFAULT }
2530OptionParser . new do |opts |
2631 opts . banner = 'Usage: ruby run_benchmarks.rb GLOB [options]'
@@ -128,10 +133,14 @@ def run_benchmark(name)
128133if options [ :write_report ] == 'console'
129134 # Determine column widths with padding
130135 name_w = [ COLUMN_NAMES [ :benchmark ] . length , *results . map { |r | r [ :name ] . length } ] . max + 2
131- ruby_w = [ COLUMN_NAMES [ :ruby ] . length , *results . map { |r | "#{ r [ :ruby_ms ] } ms" . length } ] . max + 2
132- json_w = [ COLUMN_NAMES [ :json ] . length , *results . map { |r | "#{ r [ :native_ok ] ? '✓' : '✗' } #{ r [ :native_ms ] } ms #{ r [ :native_bytes ] } B" . length } ] . max + 2
133- capnp_w = [ COLUMN_NAMES [ :capnp ] . length , *results . map { |r | "#{ r [ :native_bin_ms ] } ms #{ r [ :native_bin_bytes ] } B" . length } ] . max + 2
134- pure_w = [ COLUMN_NAMES [ :pure ] . length , *results . map { |r | "#{ r [ :pure_ok ] ? '✓' : '✗' } #{ r [ :pure_ms ] } ms #{ r [ :pure_bytes ] } B" . length } ] . max + 2
136+ ruby_w = [ COLUMN_NAMES [ :ruby ] . length ,
137+ *results . map { |r | "#{ comma ( r [ :ruby_ms ] ) } ms" . length } ] . max + 2
138+ json_w = [ COLUMN_NAMES [ :json ] . length ,
139+ *results . map { |r | "#{ r [ :native_ok ] ? '✓' : '✗' } #{ comma ( r [ :native_ms ] ) } ms #{ comma ( r [ :native_bytes ] ) } B" . length } ] . max + 2
140+ capnp_w = [ COLUMN_NAMES [ :capnp ] . length ,
141+ *results . map { |r | "#{ comma ( r [ :native_bin_ms ] ) } ms #{ comma ( r [ :native_bin_bytes ] ) } B" . length } ] . max + 2
142+ pure_w = [ COLUMN_NAMES [ :pure ] . length ,
143+ *results . map { |r | "#{ r [ :pure_ok ] ? '✓' : '✗' } #{ comma ( r [ :pure_ms ] ) } ms #{ comma ( r [ :pure_bytes ] ) } B" . length } ] . max + 2
135144
136145 total_width = name_w + ruby_w + json_w + capnp_w + pure_w + 5
137146
@@ -142,10 +151,10 @@ def run_benchmark(name)
142151
143152 # Rows
144153 results . each do |r |
145- ruby_s = "#{ r [ :ruby_ms ] } ms"
146- json_s = "#{ r [ :native_ok ] ? '✓' : '✗' } #{ r [ :native_ms ] } ms #{ r [ :native_bytes ] } B"
147- capnp_s = "#{ r [ :native_bin_ms ] } ms #{ r [ :native_bin_bytes ] } B"
148- pure_s = "#{ r [ :pure_ok ] ? '✓' : '✗' } #{ r [ :pure_ms ] } ms #{ r [ :pure_bytes ] } B"
154+ ruby_s = "#{ comma ( r [ :ruby_ms ] ) } ms"
155+ json_s = "#{ r [ :native_ok ] ? '✓' : '✗' } #{ comma ( r [ :native_ms ] ) } ms #{ comma ( r [ :native_bytes ] ) } B"
156+ capnp_s = "#{ comma ( r [ :native_bin_ms ] ) } ms #{ comma ( r [ :native_bin_bytes ] ) } B"
157+ pure_s = "#{ r [ :pure_ok ] ? '✓' : '✗' } #{ comma ( r [ :pure_ms ] ) } ms #{ comma ( r [ :pure_bytes ] ) } B"
149158 printf "| %-#{ name_w -2 } s | %#{ ruby_w -2 } s | %-#{ json_w -2 } s | %#{ capnp_w -2 } s | %-#{ pure_w -2 } s |\n " , r [ :name ] , ruby_s , json_s , capnp_s , pure_s
150159 end
151160 puts "=" * total_width
@@ -195,10 +204,10 @@ def run_benchmark(name)
195204 svg << " <tbody>\n "
196205 results . each_with_index do |r , idx |
197206 row_style = idx . odd? ? " style='background:#f0f0f0;'" : ''
198- ruby_s = "#{ r [ :ruby_ms ] } ms"
199- json_s = "#{ r [ :native_ok ] ? '✓' : '✗' } #{ r [ :native_ms ] } ms #{ r [ :native_bytes ] } B"
200- capnp_s = "#{ r [ :native_bin_ms ] } ms #{ r [ :native_bin_bytes ] } B"
201- pure_s = "#{ r [ :pure_ok ] ? '✓' : '✗' } #{ r [ :pure_ms ] } ms #{ r [ :pure_bytes ] } B"
207+ ruby_s = "#{ comma ( r [ :ruby_ms ] ) } ms"
208+ json_s = "#{ r [ :native_ok ] ? '✓' : '✗' } #{ comma ( r [ :native_ms ] ) } ms #{ comma ( r [ :native_bytes ] ) } B"
209+ capnp_s = "#{ comma ( r [ :native_bin_ms ] ) } ms #{ comma ( r [ :native_bin_bytes ] ) } B"
210+ pure_s = "#{ r [ :pure_ok ] ? '✓' : '✗' } #{ comma ( r [ :pure_ms ] ) } ms #{ comma ( r [ :pure_bytes ] ) } B"
202211 svg << " <tr#{ row_style } ><td #{ cell_style } >#{ r [ :name ] } </td><td #{ cell_style } >#{ ruby_s } </td><td #{ cell_style } >#{ json_s } </td><td #{ cell_style } >#{ capnp_s } </td><td #{ cell_style } >#{ pure_s } </td></tr>\n "
203212 end
204213 svg << " </tbody>\n "
0 commit comments