fog--fog/benchs/load_times.rb

38 lines
804 B
Ruby

require 'benchmark'
$LOAD_PATH << File.dirname(__FILE__) + '/../lib'
def time_in_fork(&block)
read, write = IO.pipe
Process.fork do
write.puts Benchmark.realtime{ block.call }
end
Process.wait
write.close
read.read.tap do
read.close
end
end
class Array
def avg
map(&:to_f).inject(:+) / size
end
end
def report(label, n = 10, &block)
puts label
puts "%.4f" % n.times.map{ time_in_fork &block }.avg
puts
end
# make rubygems load specifications now so the
# time is not included below.
Gem::Specification._all
N = 10
report("require fog:", N) { require 'fog' }
report("require fog/aws:", N) { require 'fog/aws' }
report("require fog/aws/compute:", N) { require 'fog/aws/compute' }
report("require fog/aws/core:", N) { require 'fog/aws/core'}