找到SelectRuby代码的运行时间
Find the Run Time of Select Ruby Code
问题
你们好,所以我想在 Ruby 中找到一段代码的 运行 时间,但我不完全确定我该怎么做。我想 运行 一些代码,然后输出 运行 该代码花费了多长时间,因为我有一个超级大的程序并且 运行 时间变化很大。我想确保它始终具有一致的 运行 时间(我可以通过让它休眠几分之一秒来做到这一点)但这不是我的问题。我想知道 运行 时间实际有多长,以便程序可以知道它是否需要放慢速度或加快速度。
我的想法
所以,我知道它是如何工作的。我从未在 ruby 中使用过 Time
,但我知道如何使用它。我可以有一个 variable
等于时间(以毫秒为单位),然后我在代码块的末尾制作另一个 variable
再次执行它,然后我只是减去它们,但我有(1) 从未使用过 Time
和 (2) 我实际上不知道这是否是最好的方法。
提前致谢!
Ruby 有 Benchmark 模块来计算事情需要多长时间。我从来没有用过这个,除了看看一个方法是否花费太长时间 运行 等。在开发中,不确定这是 'recommended' 用于生产代码还是为了保持最小值 运行time(听起来您可能正在做),但请看一下它对您的用例的感觉。
听起来您可能也对 Timeout 模块感兴趣(以确保事情不会超过设定的时间)。
如果您确实有一个用例来确保某些事情需要 最少 时间,请为代码计时(使用基准方法或仅使用时间或其他解决方案)和那么sleep
唯一想到的就是区别。
很简单。看表(Time.now
)记时间,运行码,再看表,减
t0 = Time.now
# your block of code
puts Time.now - t0
[http://ruby-doc.org/core-1.9.3/Time.html
您想要使用 Time 对象。 (时间文档)
例如,
start = Time.now
# code to time
finish = Time.now
diff = finish - start
diff 以秒为单位,作为浮点数。
编辑:结尾保留。
或者你可以使用
需要 'benchmark'
def foo
time = Benchmark.measure {
code to test
}
puts time.real #或者保存到日志
结尾
示例输出:
2.2.3 :001 > foo
5.230000 0.020000 5.250000 ( 5.274806)
值为 CPU 时间、系统时间、总时间和实际经过时间。
[http://ruby-doc.org/stdlib-2.0.0/libdoc/benchmark/rdoc/Benchmark.html#method-c-bm
资料来源:Ruby 文档。
问题
你们好,所以我想在 Ruby 中找到一段代码的 运行 时间,但我不完全确定我该怎么做。我想 运行 一些代码,然后输出 运行 该代码花费了多长时间,因为我有一个超级大的程序并且 运行 时间变化很大。我想确保它始终具有一致的 运行 时间(我可以通过让它休眠几分之一秒来做到这一点)但这不是我的问题。我想知道 运行 时间实际有多长,以便程序可以知道它是否需要放慢速度或加快速度。
我的想法
所以,我知道它是如何工作的。我从未在 ruby 中使用过 Time
,但我知道如何使用它。我可以有一个 variable
等于时间(以毫秒为单位),然后我在代码块的末尾制作另一个 variable
再次执行它,然后我只是减去它们,但我有(1) 从未使用过 Time
和 (2) 我实际上不知道这是否是最好的方法。
提前致谢!
Ruby 有 Benchmark 模块来计算事情需要多长时间。我从来没有用过这个,除了看看一个方法是否花费太长时间 运行 等。在开发中,不确定这是 'recommended' 用于生产代码还是为了保持最小值 运行time(听起来您可能正在做),但请看一下它对您的用例的感觉。
听起来您可能也对 Timeout 模块感兴趣(以确保事情不会超过设定的时间)。
如果您确实有一个用例来确保某些事情需要 最少 时间,请为代码计时(使用基准方法或仅使用时间或其他解决方案)和那么sleep
唯一想到的就是区别。
很简单。看表(Time.now
)记时间,运行码,再看表,减
t0 = Time.now
# your block of code
puts Time.now - t0
[http://ruby-doc.org/core-1.9.3/Time.html 您想要使用 Time 对象。 (时间文档)
例如,
start = Time.now
# code to time
finish = Time.now
diff = finish - start
diff 以秒为单位,作为浮点数。
编辑:结尾保留。 或者你可以使用 需要 'benchmark'
def foo
time = Benchmark.measure {
code to test
}
puts time.real #或者保存到日志 结尾 示例输出:
2.2.3 :001 > foo
5.230000 0.020000 5.250000 ( 5.274806)
值为 CPU 时间、系统时间、总时间和实际经过时间。 [http://ruby-doc.org/stdlib-2.0.0/libdoc/benchmark/rdoc/Benchmark.html#method-c-bm 资料来源:Ruby 文档。