2009-10-29 140 views
2

我想確定經過時間減去任何中斷的持續時間。下面的方法似乎效率低下,很愚蠢是否有更好的方法?Ruby時間計算

用戶指定end_time和start_time並將任何中斷記錄爲表示分鐘的整數。

def duration 
    ((end_time - start_time).seconds - interrupt.minutes)/60 
end 
+0

爲什麼你想從秒減去分鐘?它不應該是'interrupt.minutes * 60'嗎? – Swanand 2009-10-29 06:36:31

+0

我不知道我得到什麼效率低下或愚蠢!代碼看起來相當富有表現力,儘管'.seconds'可能是不必要的。你認爲它有多高效和明智? – 2009-10-29 08:44:27

+0

哦,@Swanand - 我剛剛檢查過:一切都在幾秒鐘內,所以4.minutes返回240秒。也許該函數應該返回秒,並在幾分鐘內顯示格式化? – 2009-10-29 08:46:33

回答

2

你有沒有進去看了Benchmarks Module?

似乎做你想要什麼,它是Ruby的核心庫的一部分。

require 'benchmark' 

Benchmark.bm do |x| 
    x.report block_to_time 
end 

它的輸出與unix time命令非常相似。詳細說明在內核空間花費的時間,在用戶空間花費的時間和CPU總時間,以及實際耗用的時間。

+0

我應該澄清(現在有)這些值來自用戶輸入。儘管基準模塊雖然看起來非常有用,否則。 – ahsteele 2009-10-29 04:08:36