How to get accurate ticks from a timer (high‑resolution timer) in Scala

1 Answer

0 votes
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

*/

 



answered May 9 by avibootz
...