DEV Community

Discussion on: Ruby Instant performance measurement

Collapse
 
ohaddahan profile image
ohaddahan • Edited

This is a good naive way but there are many proper tools developed for this with better accuracy and performance.

github.com/evanphx/benchmark-ips is a great tool and should be used for benchmarks.
Also, Time.now is slower and less accurate compared to

Process.clock_gettime(Process::CLOCK_MONOTONIC)

require 'benchmark/ips'
Benchmark.ips do |x|
  x.config(:time => 5, :warmup => 2)
  x.report("Time.now") do
    Time.now
  end
  x.report("Process.clock_gettime(Process::CLOCK_MONOTONIC)") do
    Process.clock_gettime(Process::CLOCK_MONOTONIC)
  end
end


Warming up --------------------------------------
            Time.now   151.525k i/100ms
Process.clock_gettime(Process::CLOCK_MONOTONIC)
                       245.057k i/100ms
Calculating -------------------------------------
            Time.now      2.383M (± 6.2%) i/s -     11.970M in   5.045105s
Process.clock_gettime(Process::CLOCK_MONOTONIC)
                          5.875M (± 2.6%) i/s -     29.407M in   5.009710s