diff options
author | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-08-24 02:03:06 +0000 |
---|---|---|
committer | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-08-24 02:03:06 +0000 |
commit | 249bd1ed2a00c9c3defdd09224b22a6691f73789 (patch) | |
tree | d27e5f87525fcb6e333766b4bdeb25ee5b31b13c | |
parent | ccbeb0d6dce7e38d98232f91fc0b4bbdc499674f (diff) | |
download | ruby-249bd1ed2a00c9c3defdd09224b22a6691f73789.tar.gz |
lib/benchmark.rb: speedup by reducing allocations
* lib/benchmark.rb (module Benchmark): define BENCHMARK_CLOCK
(realtime): use Process.clock_gettime(BENCHMARK_CLOCK)
[Feature #10165]
* test/benchmark/test_benchmark.rb (test_realtime_output): new test
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47260 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | lib/benchmark.rb | 12 | ||||
-rw-r--r-- | test/benchmark/test_benchmark.rb | 5 |
3 files changed, 23 insertions, 2 deletions
@@ -1,3 +1,11 @@ +Sun Aug 24 10:35:54 2014 Pete Higgins <pete@peterhiggins.org> + + * lib/benchmark.rb (module Benchmark): define BENCHMARK_CLOCK + (realtime): use Process.clock_gettime(BENCHMARK_CLOCK) + Reduces allocations to improve performance [Feature #10165] + + * test/benchmark/test_benchmark.rb (test_realtime_output): new test + Fri Aug 22 20:23:54 2014 Koichi Sasada <ko1@atdot.net> * string.c (rb_fstring): fix condition (easy to cause infinite loop!). diff --git a/lib/benchmark.rb b/lib/benchmark.rb index bd3b07284f..eff6cb12ef 100644 --- a/lib/benchmark.rb +++ b/lib/benchmark.rb @@ -286,13 +286,21 @@ module Benchmark label) end + # :stopdoc: + if defined?(Process::CLOCK_MONOTONIC) + BENCHMARK_CLOCK = Process::CLOCK_MONOTONIC + else + BENCHMARK_CLOCK = Process::CLOCK_REALTIME + end + # :startdoc: + # # Returns the elapsed real time used to execute the given block. # def realtime # :yield: - r0 = Time.now + r0 = Process.clock_gettime(BENCHMARK_CLOCK) yield - Time.now - r0 + Process.clock_gettime(BENCHMARK_CLOCK) - r0 end module_function :benchmark, :measure, :realtime, :bm, :bmbm diff --git a/test/benchmark/test_benchmark.rb b/test/benchmark/test_benchmark.rb index b2239d486a..7e9653de05 100644 --- a/test/benchmark/test_benchmark.rb +++ b/test/benchmark/test_benchmark.rb @@ -152,4 +152,9 @@ BENCH t.add! { sleep 0.1 } assert_not_equal(0, t.real) end + + def test_realtime_output + realtime = Benchmark.realtime { sleep 0.001 } + assert_in_delta 0.001, realtime + end end |