+reportTime :: (<e> a) -> <e> a
+reportTime f = runProc do
+ beginTime = nanoTime ()
+ result = f
+ endTime = nanoTime ()
+ time = Java.l2d (endTime-beginTime) * 1e-9
+ LOGGER.info "time \(time) s"
+ result
+
+reportTimeM :: String -> (<e> a) -> <e> a
+reportTimeM task f = runProc do
+ beginTime = nanoTime ()
+ result = f
+ endTime = nanoTime ()
+ time = Java.l2d (endTime-beginTime) * 1e-9
+ LOGGER.info "\(task): \(time) s"
+ result
+