Klock Measure
Klock has utilities for mesuring time.
Table of contents:
Measuring Time
As for Klock 1.0, there are two relevant functionality: the measureTime
, measureTimeWithResult
functions and the PerformanceCounter
class.
measureTime
This function is inline and allocation-free, and can be used for expensive computations as well as for asynchronous blocks:
val time: TimeSpan = measureTime {
// expensive or asynchronous computation
}
measureTimeWithResult
This function is inline but it allocates a TimedResult instance, so it is not suitable for critical places, but allows to return a result along the time:
val timedResult: TimedResult<String> = measureTimeWithResult {
// expensive or asynchronous computation
"result"
}
val time: TimeSpan = timedResult.time
val result: String = timedResult.result
PerformanceCounter
This class offers a performance counter that will increase over time but that cannot be used as reference in time. Only can be used as relative time to compute deltas:
val start: Double = PerformanceCounter.microseconds
// ...
val end: Double = PerformanceCounter.microseconds
val elapsed: TimeSpan = (end - start).microseconds