Scala时间函数测量的Cosider示例:
object MapTimeMeasure {
def main(args: Array[String]): Unit = {
val intToString: Int => String = x => s"$x"
val intToString2: Int => String = time (intToString)
}
}
摘自here。
现在试试这段代码:
Elapsed time
您将在日志中看到time
。所以这个时间函数只能用于“现在”测量时间调用。但是如何在没有调用的情况下测量函数的时间?例如。 time
只包含函数并仅在{{1}}调用自身时调用包裹的函数而不是时才执行它。如何在scala中执行此操作?
答案 0 :(得分:0)
在您的示例中,time
仅在您定义函数intToString2
时被调用一次,但您可能希望每次调用函数时调用time
val intToString: Int => String = x => s"$x"
val intToString2: Int => String = i => time (intToString(i))
你可以编写测量时间的装饰函数
def timeF[A,B](func: A=>B): A=>B = {
a => time(func(a))
}
val intToString: Int => String = x => s"$x"
val intToString2: Int => String = timeF(intToString)