1

如何在 Ruby 中创建一个接受任意函数调用的简单计时器方法?

例如: time rspectime get_primes(54784637)

它仍应返回 ( get_primes) 中传递的函数的结果。

以下内容并不完全有效:

def time block
  t = Time.now
  result = eval(block)
  puts "\nCompleted in #{(Time.now - t).format} seconds"
  result
end

红宝石 1.9.3

4

3 回答 3

5

使用块更 Rubyesque:

def time
  t = Time.now
  result = yield
  puts "\nCompleted in #{Time.now - t} seconds"
  result
end

time { rspec }
于 2012-09-08T14:56:42.643 回答
3

此功能已在 Ruby 标准库的Benchmark模块中提供:

require 'benchmark'

time = Benchmark.realtime { 10_000.times { print "a" } }
于 2012-09-08T15:02:21.127 回答
2

试试这样:

def time(&block)
  t = Time.now
  result = block.call
  puts "\nCompleted in #{(Time.now - t)} seconds"
  result
end
于 2012-09-08T14:59:06.963 回答