How to measure function execution time in Java

3 Answers

0 votes
// Measuring execution time using System.nanoTime()

public class MeasureTimeNano {

    // A sample function to measure
    static void work() {
        long sum = 0;
        for (long i = 0; i < 100_000_000L; i++) {
            sum += i;
        }
    }

    public static void main(String[] args) {

        // Record start time in nanoseconds
        long start = System.nanoTime();

        work();

        // Record end time
        long end = System.nanoTime();

        long elapsedNano = end - start;
        double elapsedMillis = elapsedNano / 1_000_000.0;
        double elapsedSeconds = elapsedNano / 1_000_000_000.0;

        System.out.println("Execution time: " + elapsedMillis + " ms");
        System.out.println("Execution time: " + elapsedSeconds + " seconds");
    }
}


/* 
run:

Execution time: 487.925809 ms
Execution time: 0.487925809 seconds

*/

 



answered 7 hours ago by avibootz
0 votes
// Measuring execution time using System.currentTimeMillis()

public class MeasureTimeMillis {

    static void work() {
        long sum = 0;
        for (long i = 0; i < 100_000_000L; i++) {
            sum += i;
        }
    }

    public static void main(String[] args) {

        // Record start time in milliseconds
        long start = System.currentTimeMillis();

        work();

        // Record end time
        long end = System.currentTimeMillis();

        long elapsedMillis = end - start;
        double elapsedSeconds = elapsedMillis / 1000.0;

        System.out.println("Execution time: " + elapsedMillis + " ms");
        System.out.println("Execution time: " + elapsedSeconds + " seconds");
    }
}



/* 
run:

Execution time: 55 ms
Execution time: 0.055 seconds

*/

 



answered 7 hours ago by avibootz
0 votes
// Measuring function execution time in Java 
// using a reusable Timer SUBCLASS (milliseconds + seconds)

public class MeasureTimeWithSubclassTimer {

    // ---------------------------
    // Timer subclass
    // ---------------------------
    static class Timer {
        private long start;
        private long end;

        // Start the timer
        public void start() {
            start = System.nanoTime();  // high‑precision timer
        }

        // Stop the timer
        public void stop() {
            end = System.nanoTime();
        }

        // Return elapsed time in milliseconds
        public double elapsedMilliseconds() {
            return (end - start) / 1_000_000.0;
        }

        // Return elapsed time in seconds
        public double elapsedSeconds() {
            return (end - start) / 1_000_000_000.0;
        }
    }

    // ---------------------------
    // Function to measure
    // ---------------------------
    static void work() {
        long sum = 0;
        for (long i = 0; i < 100_000_000L; i++) {
            sum += i;
        }
    }

    // ---------------------------
    // Main program
    // ---------------------------
    public static void main(String[] args) {

        Timer t = new Timer();  // using the subclass

        t.start();
        work();
        t.stop();

        double ms = t.elapsedMilliseconds();
        double sec = t.elapsedSeconds();

        System.out.println("Execution time: " + ms + " ms");
        System.out.println("Execution time: " + sec + " seconds");
    }
}



/* 
run:

Execution time: 47.14057 ms
Execution time: 0.04714057 seconds

*/

 



answered 2 hours ago by avibootz
...