diff -r b9a7a658f7df -r ec8bf1268f45 src/Pure/General/timing.scala --- a/src/Pure/General/timing.scala Wed Dec 07 12:41:31 2022 +0100 +++ b/src/Pure/General/timing.scala Wed Dec 07 15:43:47 2022 +0100 @@ -13,8 +13,8 @@ object Timing { val zero: Timing = Timing(Time.zero, Time.zero, Time.zero) - def timeit[A]( - message: String = "", + def timeit_result[A]( + message: Exn.Result[A] => String = null, enabled: Boolean = true, output: String => Unit = Output.warning(_) )(e: => A): A = { @@ -25,9 +25,8 @@ val timing = stop - start if (timing.is_relevant) { - output( - (if (message == null || message == "") "" else message + ": ") + - timing.message + " elapsed time") + val msg = if (message == null) null else message(result) + output((if (msg == null || msg == "") "" else msg + ": ") + timing.message + " elapsed time") } Exn.release(result) @@ -35,6 +34,12 @@ else e } + def timeit[A]( + message: String = "", + enabled: Boolean = true, + output: String => Unit = Output.warning(_) + )(e: => A): A = timeit_result[A](_ => message, enabled, output)(e) + def factor_format(f: Double): String = String.format(Locale.ROOT, ", factor %.2f", java.lang.Double.valueOf(f)) }