148 votes

Est-il un chronomètre en java

Est-il un chronomètre en java, car sur google je ne trouve que des codes de chronomètres et ils ne travaillent pas, ils me donnent toujours 0 millisecondes.

Ce code que j'ai trouvé ne fonctionne pas, mais je ne vois pas pourquoi, car le code est bien pour moi.

public class StopWatch {

  private long startTime = 0;
  private long stopTime = 0;
  private boolean running = false;


  public void start() {
    this.startTime = System.currentTimeMillis();
    this.running = true;
  }


  public void stop() {
    this.stopTime = System.currentTimeMillis();
    this.running = false;
  }


  //elaspsed time in milliseconds
  public long getElapsedTime() {
    long elapsed;
    if (running) {
      elapsed = (System.currentTimeMillis() - startTime);
    }
    else {
      elapsed = (stopTime - startTime);
    }
    return elapsed;
  }


  //elaspsed time in seconds
  public long getElapsedTimeSecs() {
    long elapsed;
    if (running) {
      elapsed = ((System.currentTimeMillis() - startTime) / 1000);
    }
    else {
      elapsed = ((stopTime - startTime) / 1000);
    }
    return elapsed;
  }
}

110voto

Lukas Eder Points 48046

Vous en trouverez une dans

http://commons.apache.org/lang/

Il est appelé

org.apache.commons.lang.time.StopWatch

Mais il est à peu près la même que la vôtre. Si vous êtes dans pour plus de précision, utilisez

System.nanoTime()

Voir aussi cette question ici:

Le temps de mesure surcharge en Java

104voto

helpermethod Points 11015

L'utilisation de Goyave du Chronomètre de la classe.

Un objet qui mesure le temps écoulé, en nanosecondes. Il est utile de mesurer le temps écoulé à l'aide de cette classe au lieu de diriger les appels vers Système.nanoTime() pour plusieurs raisons:

  • Une autre source de temps peut être remplacé, pour des tests ou des raisons de performances.
  • Tel que documenté par nanoTime, la valeur retournée n'a pas de signification absolue, et ne peut être interprété que par rapport à un timestamp renvoyé par nanoTime à un autre moment. Le chronomètre est un plus efficace de l'abstraction, car il expose que ces valeurs relatives, pas l'absolu.
Stopwatch stopwatch = Stopwatch.createStarted();
doSomething();
stopwatch.stop(); // optional

long millis = stopwatch.elapsedMillis();

log.info("that took: " + stopwatch); // formatted string like "12.3 ms"

60voto

Larsen Points 149

Spring fournit un élégant Chronomètre Classe.

StopWatch stopWatch = new StopWatch();
stopWatch.start();
     // Do something
stopWatch.stop();
     System.out.println(stopWatch.getTotalTimeMillis());

8voto

asfer Points 888

Le code ne fonctionne pas car écoulé variable dans getElapsedTimeSecs() n'est pas un float/double.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X