O'Reilly logo

Java Cookbook by Ian F. Darwin

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required