Calculo de tempo

eu preciso de um metodo que calcule o tempo de processamento de um metodo, em segundos, pois o processamento sera rapido.
alguem sabe como eu faço isso usando a classe Date? ou se nao, existe outra forma de fazer?
obrigado

Já precisei fazer isso, olha o código aí

long startTime =System.currentTimeMillis(); parser.parse(input); long endTime =System.currentTimeMillis();

usei isso para mediro tempo de parsing de um xml. Se vc precisar de mais precisao, vc pode pedir o tempo corrente em nanosegundos em vez de milisegundos…

aí basta vc subrir o startTime do endTime pra encontrar o tempo de duração.

Acho que é dessa classe que você precisa:

[code]** Time the execution of any block of code. */
public final class Stopwatch {

/**

  • An example of the use of this class to

  • time the execution of String manipulation code.
    */
    public static void main (String… arguments) {
    Stopwatch stopwatch = new Stopwatch();

    stopwatch.start();

    //do stuff
    StringBuilder messageOne = new StringBuilder();
    int numIterations = 5000;
    for(int idx=0; idx < numIterations; ++idx){
    messageOne.append(“blah”);
    }

    stopwatch.stop();
    //Note that there is no need to call a method to get the duration,
    //since toString is automatic here
    System.out.println("The reading for StringBuilder is: " + stopwatch);

    //reuse the same stopwatch to measure an alternative implementation
    //Note that there is no need to call a reset method.
    stopwatch.start();

    //do stuff again
    String messageTwo = null;
    for(int idx=0; idx < numIterations; ++idx){
    messageTwo = messageTwo + “blah”;
    }

    stopwatch.stop();
    //perform a numeric comparsion
    if ( stopwatch.toValue() > 5 ) {
    System.out.println("The reading is high: " + stopwatch);
    }
    else {
    System.out.println("The reading is low: " + stopwatch);
    }
    }

/**

  • Start the stopwatch.
  • @throws IllegalStateException if the stopwatch is already running.
    */
    public void start(){
    if ( fIsRunning ) {
    throw new IllegalStateException(“Must stop before calling start again.”);
    }
    //reset both start and stop
    fStart = System.currentTimeMillis();
    fStop = 0;
    fIsRunning = true;
    fHasBeenUsedOnce = true;
    }

/**

  • Stop the stopwatch.
  • @throws IllegalStateException if the stopwatch is not already running.
    */
    public void stop() {
    if ( !fIsRunning ) {
    throw new IllegalStateException(“Cannot stop if not currently running.”);
    }
    fStop = System.currentTimeMillis();
    fIsRunning = false;
    }

/**

  • Express the “reading” on the stopwatch.
  • @throws IllegalStateException if the Stopwatch has never been used,
  • or if the stopwatch is still running.
    */
    public String toString() {
    validateIsReadable();
    StringBuilder result = new StringBuilder();
    result.append(fStop - fStart);
    result.append(" ms");
    return result.toString();
    }

/**

  • Express the “reading” on the stopwatch as a numeric type.
  • @throws IllegalStateException if the Stopwatch has never been used,
  • or if the stopwatch is still running.
    */
    public long toValue() {
    validateIsReadable();
    return fStop - fStart;
    }

// PRIVATE ////
private long fStart;
private long fStop;

private boolean fIsRunning;
private boolean fHasBeenUsedOnce;

/**

  • Throws IllegalStateException if the watch has never been started,
  • or if the watch is still running.
    */
    private void validateIsReadable() {
    if ( fIsRunning ) {
    String message = “Cannot read a stopwatch which is still running.”;
    throw new IllegalStateException(message);
    }
    if ( !fHasBeenUsedOnce ) {
    String message = “Cannot read a stopwatch which has never been started.”;
    throw new IllegalStateException(message);
    }
    }
    }[/code]

fonte:
http://www.javapractices.com/topic/TopicAction.do?Id=85

fw

mas renzonuccitelli
isso que vc colocou calcula em milesimos ne, teria como eu calcular em segundos??
obrigado

Hmm… já tentou dividir os milésimos por mil :stuck_out_tongue: