In Java, you can use the following ways to measure elapsed time in Java.
1. System.nanoTime()
This is the recommended solution to measure elapsed time in Java.
ExecutionTime1.java
package com.favtuts.time;
import java.util.concurrent.TimeUnit;
public class ElapsedTimeExecutionTime {
public static void main(String[] args) throws InterruptedException {
measuredElapsedTimeWithSystemNanoTime();
}
static void measuredElapsedTimeWithSystemNanoTime() throws InterruptedException {
// start
long lStartTime = System.nanoTime();
// task
calculation();
// end
long lEndTime = System.nanoTime();
// time elapsed
long output = lEndTime - lStartTime;
System.out.println("Elapsed time in milliseconds: " + output / 1000000);
}
private static void calculation() throws InterruptedException {
// Sleep 2 seconds
TimeUnit.SECONDS.sleep(2);
}
}
Output may vary.
Elapsed time in milliseconds: 2000
2. System.currentTimeMillis()
ExecutionTime2.java
package com.favtuts.time;
import java.util.concurrent.TimeUnit;
public class ElapsedTimeExecutionTime {
public static void main(String[] args) throws InterruptedException {
measuredElapsedTimeWithSystemCurrentTimeMillis();
}
static void measuredElapsedTimeWithSystemCurrentTimeMillis() throws InterruptedException {
long lStartTime = System.currentTimeMillis();
calculation();
long lEndTime = System.currentTimeMillis();
long output = lEndTime - lStartTime;
System.out.println("Elapsed time in milliseconds: " + output);
}
private static void calculation() throws InterruptedException {
// Sleep 2 seconds
TimeUnit.SECONDS.sleep(2);
}
}
Output may vary.
Elapsed time in milliseconds: 2000
3. Instant.now().toEpochMilli()
In Java 8, you can try the new java.time.Instant
ExecutionTime3.java
package com.favtuts.time;
import java.time.Instant;
import java.util.concurrent.TimeUnit;
public class ElapsedTimeExecutionTime {
public static void main(String[] args) throws InterruptedException {
measuredElapsedTimeWithInstantNowToEpochMilli();
}
static void measuredElapsedTimeWithInstantNowToEpochMilli() throws InterruptedException {
long lStartTime = Instant.now().toEpochMilli();
calculation();
long lEndTime = Instant.now().toEpochMilli();
long output = lEndTime - lStartTime;
System.out.println("Elapsed time in milliseconds: " + output);
}
private static void calculation() throws InterruptedException {
// Sleep 2 seconds
TimeUnit.SECONDS.sleep(2);
}
}
Output may vary.
Elapsed time in milliseconds: 2000
4. Date().getTime()
ExecutionTime4.java
package com.favtuts.time;
import java.util.Date;
import java.util.concurrent.TimeUnit;
public class ElapsedTimeExecutionTime {
public static void main(String[] args) throws InterruptedException {
measuredElapsedTimeWithDateGetTime();
}
static void measuredElapsedTimeWithDateGetTime() throws InterruptedException {
long lStartTime = new Date().getTime();
calculation();
long lEndTime = new Date().getTime();
long output = lEndTime - lStartTime;
System.out.println("Elapsed time in milliseconds: " + output);
}
private static void calculation() throws InterruptedException {
// Sleep 2 seconds
TimeUnit.SECONDS.sleep(2);
}
}
Output
Elapsed time in milliseconds: 2001
Download Source Code
$ git clone https://github.com/favtuts/java-core-tutorials-examples
$ cd java-basic/time