BigW Consortium Gitlab
Process.clock_gettime allows getting the real time in nanoseconds as well as allowing one to get a monotonic timestamp. This offers greater accuracy without the overhead of having to allocate a Time instance. In general using Time.now/Time.new is about 2x slower than using Process.clock_gettime(). For example: require 'benchmark/ips' Benchmark.ips do |bench| bench.report 'Time.now' do Time.now.to_f end bench.report 'clock_gettime' do Process.clock_gettime(Process::CLOCK_MONOTONIC, :millisecond) end bench.compare! end Running this benchmark gives: Calculating ------------------------------------- Time.now 108.052k i/100ms clock_gettime 125.984k i/100ms ------------------------------------------------- Time.now 2.343M (± 7.1%) i/s - 11.670M clock_gettime 4.979M (± 0.8%) i/s - 24.945M Comparison: clock_gettime: 4979393.8 i/s Time.now: 2342986.8 i/s - 2.13x slower Another benefit of using Process.clock_gettime() is that we can simplify the code a bit since it can give timestamps in nanoseconds out of the box.
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
subscribers | Loading commit data... | |
delta_spec.rb | Loading commit data... | |
instrumentation_spec.rb | Loading commit data... | |
method_call_spec.rb | Loading commit data... | |
metric_spec.rb | Loading commit data... | |
rack_middleware_spec.rb | Loading commit data... | |
sampler_spec.rb | Loading commit data... | |
sidekiq_middleware_spec.rb | Loading commit data... | |
system_spec.rb | Loading commit data... | |
transaction_spec.rb | Loading commit data... |