object HighResTimer {
def main(args: Array[String]): Unit = {
// Start timer (nanoseconds)
val start = System.nanoTime()
// Do some work
for (_ <- 0 until 1_000_000) {
// simple loop
}
// Stop timer
val end = System.nanoTime()
// Raw ticks (nanoseconds)
val ticks = end - start
// Convert to time units
val nanoseconds = ticks.toDouble
val microseconds = nanoseconds / 1_000
val milliseconds = nanoseconds / 1_000_000
val seconds = nanoseconds / 1_000_000_000
// Frequency (ticks per second)
val frequency = 1_000_000_000L // nanoTime = 1 tick per nanosecond
// Print results
println(s"Elapsed ticks (ns): $ticks")
println(s"Elapsed ms: $milliseconds")
println(s"Elapsed us: $microseconds")
println(s"Elapsed seconds: $seconds")
println(s"Timer frequency: $frequency Hz")
}
}
/*
run:
Elapsed ticks (ns): 22468726
Elapsed ms: 22.468726
Elapsed us: 22468.726
Elapsed seconds: 0.022468726
Timer frequency: 1000000000 Hz
*/