High-Resolution Timers
Problem
You need to time how long something takes.
Solution
Call System.getTimeMillis( )
twice, and subtract the first result
from the second result.
Discussion
Needing a timer is such a common thing that, instead of making you
depend on some external library, the developers of Java have built it
in. The
System
class contains a static method that returns the current time (since
1970) in milliseconds. Thus, to time some event, use this:
long start = System.getTimeMillis( ); method_to_be_timed( ); long end = System.getTimeMillis( ); l ong elapsed = end - start; // time in msec.
Here is a short example to measure how long it takes a user to press
return. We divide the time in milliseconds by a thousand to get
seconds, and print it nicely using a NumberFormat:
// Timer0.java
long t0, t1;
System.out.println("Press return when ready");
t0=System.currentTimeMillis( );
int b;
do {
b = System.in.read( );
} while (b!='\r' && b != '\n');
t1=System.currentTimeMillis( );
double deltaT = t1-t0;
System.out.println("You took " +
DecimalFormat.getInstance( ).format(deltaT/1000.) + " seconds.");This longer example uses the same technique, but computes a large
number of square roots and writes each one to a
discard file using the getDevNull( ) method from
Section 2.5:
import java.io.*; import java.text.*; /** * Timer for processing sqrt and I/O operations. */ public class Timer { public static void main(String argv[]) { try { new Timer().run( ); } catch (IOException e) { System.err.println(e); ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access