1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/benchs/load_times.rb

38 lines
804 B
Ruby
Raw Normal View History

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'}