処理時間計る制御構造っぽいやつ

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

}

っていうように、簡単に差し込めるから便利かなぁという意図です。
まぁこんな単純なもの、ある程度慣れてれば誰でも作れると思うので、もっと機能欲しかったら適当に改造してください。