Skip to content

Latest commit

 

History

History
50 lines (38 loc) · 1.4 KB

measure.md

File metadata and controls

50 lines (38 loc) · 1.4 KB
permalink layout group title title_short description fa-icon priority
/time/measure/
default
time
Time Measure
Measure
measureTime, measureTimeWithResult & PerformanceCounter
fa-ruler-horizontal
40

Klock has utilities for mesuring time.

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