## How do I calculate process execution time in higher resolution?

This example demonstrates how to use the `System.nanoTime()` method to calculate processing execution time in higher resolution. The processing time calculated in nanoseconds resolution.

``````package org.kodejava.example.lang;

public class NanoSecondsTimerResolution {
public static void main(String[] args) {
// Get process execution start time in nanoseconds.
long start = System.nanoTime();
System.out.println("Process start... " + start);

try {
Thread.sleep(5000); // Simulate a long process.
} catch (InterruptedException e) {
e.printStackTrace();
}

// Get process execution finish time in nanoseconds.
long finish = System.nanoTime();
System.out.println("Process finish... " + finish);

// Calculate the process execution time.
long execTime = finish - start;
System.out.println("Processing time = " + execTime + "(ns)");
}
}
``````

## How do I calculate process elapsed time?

This example shows us how to use the `System.nanoTime()` method to get the amount of time a process take place. Please be aware that the nano time value is not related to the real world time value.

``````package org.kodejava.example.lang;

public class ElapsedTimeExample {
public static void main(String[] args) {
// Get the start time of the process
long start = System.nanoTime();
System.out.println("Start: " + start);

// Just do some a bit long process calculating the total value
// of even number from zero to 10000
int totalEven = 0;
for (int i = 0; i < 10000; i++) {
if (i % 2 == 0) {
totalEven = totalEven + i;
}
}

// Get the end time of the process
long end = System.nanoTime();
System.out.println("End  : " + end);

long elapsedTime = end - start;

// Show how long it took to finish the process
System.out.println("The process took approximately: "
+ elapsedTime + " nano seconds");
}
}
``````

And example of the result are:

``````Start: 19286838358442
End  : 19286839756241
The process took approximately: 1397799 nano seconds
``````