Files
gitlabhq/lib/gitlab
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
..
2016-06-06 17:40:26 +02:00
2016-06-17 08:55:05 +01:00
2015-11-30 18:36:34 +02:00
2015-12-15 00:53:52 -02:00
2014-09-29 12:05:17 +03:00
2016-06-21 11:26:44 +02:00
2016-06-22 16:10:55 -05:00
2016-06-12 21:05:58 -04:00
2015-11-18 13:31:18 +01:00
2016-06-20 14:48:28 -05:00
2014-10-06 00:14:46 +02:00
2016-06-01 12:10:08 +02:00
2015-02-24 15:07:24 +01:00
2016-04-13 13:12:05 +03:00
2014-10-06 00:14:46 +02:00
2016-06-20 09:17:07 +02:00
2016-06-16 09:01:09 +02:00
2014-10-31 17:22:16 -07:00
2014-10-06 00:14:46 +02:00
2015-03-24 18:35:57 -07:00
2014-10-06 00:14:46 +02:00
2016-06-03 10:37:09 -06:00
2014-10-06 00:14:46 +02:00
2015-08-26 11:30:38 -07:00
2016-03-10 12:37:14 +01:00
2013-06-06 10:10:51 +09:00