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