2012-11-09 156 views
2

在多線程環境中,Ruby/Rails可以測量單個線程的實際執行時間嗎?在多線程環境中測量線程的執行時間

我一次創建多達10個線程,目前我正在計算每個線程的運行時間,但由於多個線程正在共享處理器,因此在共享資源時會有差距。所以我的時間將超過實際。

@urls.each do |url| 
    Thread.new do 
    time = Time.now 
    request = http.get(url) 
    response_time = Time.now - time 
    end 
    ... 
end 
+0

您的結果可能取決於您使用的Ruby實現。例如,如果你堅持使用MRI,你將只有綠線,這意味着它們基本上是模擬線程,並不涉及真正的系統線程。這也意味着你不能使用多個處理器。那麼你在使用哪個Ruby? – jhchabran

+0

哦,你應該使用Benchmark來衡量你的表現,而不是使用Time.now進行基礎算術:) http://www.ruby-doc.org/stdlib-1.9.3/libdoc/benchmark/rdoc/Benchmark.html – jhchabran

回答

2

wycats取得了一個名爲ruby-prof涼爽的寶石,應該幫助你。它支持同時分析多個線程,包括進程時間,CPU時間和掛牆時間。

+0

這就是一個偉大的領先。我現在檢查一下。 –

+0

就在 - 祝你好運! –

+0

因爲我在生產中實際使用它來測量生產中的流程時間,所以有什麼想法,而不僅僅是爲了衡量流程的改進?我看到提及ruby-prof加倍實際處理時間。 –