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 |
---|---|---|
.. | ||
banzai | Loading commit data... | |
ci | Loading commit data... | |
container_registry | Loading commit data... | |
gitlab | Loading commit data... | |
json_web_token | Loading commit data... | |
disable_email_interceptor_spec.rb | Loading commit data... | |
extracts_path_spec.rb | Loading commit data... | |
file_size_validator_spec.rb | Loading commit data... | |
git_ref_validator_spec.rb | Loading commit data... | |
gitlab_spec.rb | Loading commit data... | |
repository_cache_spec.rb | Loading commit data... |