benchmark/bench_results.rb in ebb-0.0.4 vs benchmark/bench_results.rb in ebb-0.1.0

- old
+ new

@@ -2,44 +2,57 @@ require 'rubygems' require 'google_chart' require 'server_test' class Array - def avg - sum.to_f / length + def max + inject(first) { |m, i| i > m ? i : m } end - def sum - inject(0) { |i, s| s += i } + + def min + inject(first) { |m, i| i < m ? i : m } end end -colors = %w{F74343 444130 7DA478 E4AC3D} -max_x = 0 -max_y = 0 +colors = %w{F74343 444130 7DA478 E4AC3D 1F479E} +data_x = [] +data_y = [] results = ServerTestResults.open(ARGV[0]) -all_m = [] -response_chart = GoogleChart::LineChart.new('400x300', Time.now.strftime('%Y.%m.%d'), true) -results.servers.each do |server| + +response_chart = GoogleChart::LineChart.new('500x300', Time.now.strftime('%Y.%m.%d'), true) +servers = results.servers.sort_by do |x,y| + results.data(x).map { |d| d[1] }.mean +end.reverse + +cmap = {} +results.servers.sort.each { |x| cmap[x] = colors.shift } + +servers.each do |server| data = results.data(server).sort - response_chart.data(server, data, colors.shift) - x = data.map { |d| d[0] }.max - y = data.map { |d| d[1] }.max - max_x = x if x > max_x - max_y = y if y > max_y + data_x += data.map { |d| d[0] } + data_y += data.map { |d| d[1] } end +servers.each do |server| + data = results.data(server).sort + data.map! { |d| [d[0]-data_x.min, d[1]-data_y.min]} + response_chart.data(server, data, cmap[server]) +end + label = case results.benchmark when "response_size" "kilobytes served" when "wait_fib", "concurrency" "concurrency" when "post_size" "kilobytes uploaded" +when "wait", "wait_fib" + "seconds waited every 10 requests" end -response_chart.axis(:y, :range => [0,max_y]) +response_chart.axis(:y, :range => [data_y.min,data_y.max]) response_chart.axis(:y, :labels => ['req/s'], :positions => [50]) -response_chart.axis(:x, :range => [0,max_x]) +response_chart.axis(:x, :range => [data_x.min,data_x.max]) response_chart.axis(:x, :labels => [label], :positions => [50]) puts response_chart.to_url