gitlab-org--gitlab-foss/spec/lib
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
..
banzai Wrap images in divs with Banzai and limit max-height. 2016-06-27 09:16:07 -06:00
ci Merge branch 'test-gitlab-ci-ymls' into 'master' 2016-06-27 15:16:19 +00:00
container_registry Fix regression introduced by https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/4669 2016-06-17 13:24:50 +02:00
gitlab Use clock_gettime for all performance timestamps 2016-06-28 17:51:25 +02:00
json_web_token Revert "Fix merge conflicts - squashed commit" 2016-06-03 11:10:17 +02:00
disable_email_interceptor_spec.rb Fix failing EmailOnPush spec. 2016-06-10 14:11:02 +05:30
extracts_path_spec.rb Added & use Gitlab::Routing for URL helpers 2016-04-01 11:13:48 +02:00
file_size_validator_spec.rb
git_ref_validator_spec.rb
gitlab_spec.rb
repository_cache_spec.rb