object Timer{ def apply[A](func: => A):A = { val before = System.currentTimeMillis val result = func println( System.currentTimeMillis - before ) result } }
こんな感じで使います↓
scala> Timer{ | Thread.sleep(5000) | 3 | } 5000 res0: Int = 3 scala> Timer{ | BigInt(1) to 100000 sum | } 79 res1: BigInt = 5000050000
まぁこれだけです。なんかもっと良い書き方とかあったら教えてください
追記:
早速教えてもらったんですが、なんかこんなものあるらしいですね
Benchmarkっていうの継承して、runを定義すると、そのrunの実行時間測ってくれるっていう使い方かな。
自分が定義したTimerは、あるメソッドが以下のようにあって
def hoge = { //処理A //処理B //処理C }
あるメソッドの中の処理Bの部分だけ時間を計測したい
っていう場合に
def hoge = { //処理A Timer{ //処理B } //処理C }
っていうように、簡単に差し込めるから便利かなぁという意図です。
まぁこんな単純なもの、ある程度慣れてれば誰でも作れると思うので、もっと機能欲しかったら適当に改造してください。