gitlab-org--gitlab-foss/spec/lib/gitlab/metrics
Yorick Peterse d7b4f36a3c
Use clock_gettime for all performance timestamps
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.
2016-06-28 17:51:25 +02:00
..
subscribers Enable RSpec/NotToNot cop and auto-correct offenses 2016-05-24 15:40:29 -04:00
delta_spec.rb
instrumentation_spec.rb Track method call times/counts as a single metric 2016-06-17 13:09:55 -04:00
method_call_spec.rb Track method call times/counts as a single metric 2016-06-17 13:09:55 -04:00
metric_spec.rb
rack_middleware_spec.rb Filter out sensitive parameters of metrics data 2016-06-17 18:14:25 +02:00
sampler_spec.rb Filter out classes without names in the sampler 2016-06-14 18:09:06 +02:00
sidekiq_middleware_spec.rb Add Sidekiq queue duration to transaction metrics. 2016-06-23 13:09:52 +02:00
system_spec.rb Use clock_gettime for all performance timestamps 2016-06-28 17:51:25 +02:00
transaction_spec.rb Track method call times/counts as a single metric 2016-06-17 13:09:55 -04:00