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); ...