2
我想製作一個計時器來測量範圍的執行時間。我可以通過手動啓動計時器來完成此任務,然後在範圍的末尾放置一些東西來停止計時器,但這是兩倍的工作量。在C++中,你可以創建一個計時器類來評估何時調用其析構函數,並且當某些事情超出範圍時調用析構函數,所以定時器會自動「自動」處理它。在Scala是一種託管語言的情況下,一個實例在被垃圾回收之前不會消失,所以依靠這種方法在定時器方面基本上是無用的,除非我試圖計算一段時間之前的時間,直到垃圾收集爲止。可以在斯卡拉範圍定時器嗎?
這裏是什麼使一個計時器代碼看起來一樣,如果它在它離開範圍時自動計算的例子:
def someMethod(someVar: Int) {
val myTimer: ScopeTimer = ScopeTimer(startImmediately = true)
// Do some stuff
// Do more stuff
10 // Return some int value here
}
由於該方法返回10
,myTimer
會離開範圍,火。
是否有任何簡單的方法讓計時器在Scala中評估這樣的作用域的執行時間?
這聽起來像它會在某些情況下工作,但我不知道它會靜態對象內工作。 – 2012-02-17 01:01:46
它在對象內部工作得很好,請參閱上面的修改答案。 – 2012-02-17 01:16:48
是的,這確實有效。我在想,如果我創建計時器並將其作爲對象的成員,我不會知道對象的實例什麼時候超出範圍,但它可以用於類。但是,是的,你的方法適用於一個函數,無論如何這是原始問題。謝謝! – 2012-02-17 01:42:47