module Benchmark
Performance benchmarking library
Public Class Methods
ips()
click to toggle source
require 'benchmark/ips' Benchmark.ips do |x| # Configure the number of seconds used during # the warmup phase (default 2) and calculation phase (default 5) x.config(:time => 5, :warmup => 2) # These parameters can also be configured this way x.time = 5 x.warmup = 2 # Typical mode, runs the block as many times as it can x.report("addition") { 1 + 2 } # To reduce overhead, the number of iterations is passed in # and the block must run the code the specific number of times. # Used for when the workload is very small and any overhead # introduces incorrectable errors. x.report("addition2") do |times| i = 0 while i < times 1 + 2 i += 1 end end # To reduce overhead even more, grafts the code given into # the loop that performs the iterations internally to reduce # overhead. Typically not needed, use the |times| form instead. x.report("addition3", "1 + 2") # Really long labels should be formatted correctly x.report("addition-test-long-label") { 1 + 2 } # Compare the iterations per second of the various reports! x.compare! end
This will generate the following report:
Calculating ------------------------------------- addition 71.254k i/100ms addition2 68.658k i/100ms addition3 83.079k i/100ms addition-test-long-label 70.129k i/100ms ------------------------------------------------- addition 4.955M (± 8.7%) i/s - 24.155M addition2 24.011M (± 9.5%) i/s - 114.246M addition3 23.958M (±10.1%) i/s - 115.064M addition-test-long-label 5.014M (± 9.1%) i/s - 24.545M Comparison: addition2: 24011974.8 i/s addition3: 23958619.8 i/s - 1.00x slower addition-test-long-label: 5014756.0 i/s - 4.79x slower addition: 4955278.9 i/s - 4.85x slower
See also Benchmark::IPS
# File lib/benchmark/ips.rb, line 108