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

1 Answer

0 votes
public class HighResTimer {
    public static void main(String[] args) {

        // Start timer (nanoseconds)
        long start = System.nanoTime();

        // Do some work
        for (int i = 0; i < 1_000_000; i++) {
            // volatile-like loop to avoid optimization
        }

        // Stop timer
        long end = System.nanoTime();

        long ticks = end - start; // raw nanoseconds

        // Convert to time units
        double nanoseconds  = ticks;
        double microseconds = nanoseconds / 1_000.0;
        double milliseconds = nanoseconds / 1_000_000.0;
        double seconds      = nanoseconds / 1_000_000_000.0;

        // Frequency (ticks per second)
        long frequency = 1_000_000_000L; // nanoTime = 1 GHz resolution

        // Print results
        System.out.println("Elapsed ticks (ns): " + ticks);
        System.out.println("Elapsed ms: " + milliseconds);
        System.out.println("Elapsed us: " + microseconds);
        System.out.println("Elapsed seconds: " + seconds);
        System.out.println("Timer frequency: " + frequency + " Hz");
    }
}



/*
run:

Elapsed ticks (ns): 2485510
Elapsed ms: 2.48551
Elapsed us: 2485.51
Elapsed seconds: 0.00248551
Timer frequency: 1000000000 Hz

*/

 



answered May 9 by avibootz
...