require 'erb' module OutputToHTML TEMPLATE_HEADER =<<"EOT"
All times are rounded to the nearest thousandth for display purposes. Speedups next to each time are computed before any rounding occurs. Also, all speedup calculations are computed by comparing a given time against the very first column (which is always the default ActiveRecord::Base.create method.
EOT TEMPLATE =<<"EOT" <% columns.each do |col| %> <% end %> <% times.each do |time| %> <% end %>
<%= col %>
<%= time %>
 
EOT def self.output_results( filename, results ) html = '' results.each do |result_set| columns, times = [], [] result_set.each do |result| columns << result.description if result.failed times << "failed" else time = result.tms.real.round_to( 3 ) speedup = ( result_set.first.tms.real / result.tms.real ).round if result == result_set.first times << "#{time}" else times << "#{time} (#{speedup}x speedup)" end end end template = ERB.new( TEMPLATE, 0, "%<>") html << template.result( binding ) end File.open( filename, 'w' ){ |file| file.write( TEMPLATE_HEADER + html ) } end end