# viiite report --regroup bench,threads bench/pack_log_long.rb require 'viiite' require 'msgpack' data_plain = MessagePack.pack({ 'message' => '127.0.0.1 - - [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)"' }) data_structure = MessagePack.pack({ 'remote_host' => '127.0.0.1', 'remote_user' => '-', 'date' => '10/Oct/2000:13:55:36 -0700', 'request' => 'GET /apache_pb.gif HTTP/1.0', 'method' => 'GET', 'path' => '/apache_pb.gif', 'protocol' => 'HTTP/1.0', 'status' => 200, 'bytes' => 2326, 'referer' => 'http://www.example.com/start.html', 'agent' => 'Mozilla/4.08 [en] (Win98; I ;Nav)', }) seconds = 3600 # 1 hour Viiite.bench do |b| b.range_over([1, 2, 4, 8, 16], :threads) do |threads| b.report(:plain) do ths = [] end_at = Time.now + seconds threads.times do t = Thread.new do packs = 0 while Time.now < end_at 10000.times do MessagePack.unpack(data_plain) end packs += 10000 end packs end ths.push t end sum = ths.reduce(0){|r,t| r + t.value } puts "MessagePack.unpack, plain, #{threads} threads: #{sum} times, #{sum / seconds} times/second." end b.report(:structure) do ths = [] end_at = Time.now + seconds threads.times do t = Thread.new do packs = 0 while Time.now < end_at 10000.times do MessagePack.unpack(data_structure) end packs += 10000 end packs end ths.push t end sum = ths.reduce(0){|r,t| r + t.value } puts "MessagePack.unpack, structured, #{threads} threads: #{sum} times, #{sum / seconds} times/second." end end end