¿Hay cronómetro en Java? En Google solo encuentro códigos de cronómetros que no funcionan, siempre devuelven 0 milisegundos.
Este código que encontré no funciona pero no veo por qué.
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;
}
}
currentTimeMillis()
para producción, ya que está vinculado a la fecha / hora del sistema y no se garantiza que sea monótono (por ejemplo, puede obtener un tiempo transcurrido negativo). Para medir el uso del tiemponanoTime()
, se garantiza que es monótono y está diseñado exactamente para medir. Ver docs.oracle.com/javase/8/docs/api/java/lang/…Respuestas:
Encontrarás uno en
http://commons.apache.org/lang/
Se llama
Pero hace aproximadamente lo mismo que el tuyo. Si busca más precisión, use
Vea también esta pregunta aquí:
Sobrecarga de medición de tiempo en Java
fuente
Usa la
Stopwatch
clase de Guava .fuente
getStartTime()
, falta el apacheisRunning()
ahhhhAhora puedes probar algo como:
La salida está en ISO 8601.
fuente
Spring proporciona una
org.springframework.util.StopWatch
clase elegante (módulo de núcleo de resorte).fuente
Utilice
System.currentTimeMillis()
para obtener la hora de inicio y la hora de finalización y calcular la diferencia.Más información en este tutorial
fuente
El código no funciona porque la variable transcurrida en
getElapsedTimeSecs()
no es unfloat
odouble
.fuente
No hay una utilidad de cronómetro incorporada, pero a partir de JSR-310 (Java 8 Time) puede hacer esto simplemente.
No he evaluado esto correctamente, pero supongo que usar el cronómetro de Guava es más efectivo.
fuente
prueba esto http://introcs.cs.princeton.edu/java/stdlib/Stopwatch.java.html
eso es muy facil
Esta clase es parte de stdlib.jar
fuente
Clase de cronómetro simple y lista para usar:
Uso:
fuente
use: com.google.common.base.Stopwatch, es simple y fácil.
ejemplo:
esta tarea tomó 112 molinos
fuente
prueba esto
fuente
Prueba esto:
Utilizar:
fuente
Prueba esto.
Uso:
Consola:
fuente
currentTimeMillis()
está vinculado a la fecha / hora del sistema y no se garantiza que sea monótono (por ejemplo, puede obtener un tiempo transcurrido negativo).System.nanoTime()
para obtener siempre los resultados correctos.Performetrics proporciona una clase de cronómetro conveniente, justo de la manera que necesita. Puede medir el tiempo del reloj de pared y más: también mide el tiempo de la CPU (tiempo del usuario y tiempo del sistema) si lo necesita. Es pequeño, gratuito y se puede descargar desde Maven Central. Puede encontrar más información y ejemplos aquí: https://obvj.net/performetrics
Puede convertir las métricas a cualquier unidad de tiempo (nanosegundos, milisegundos, segundos, etc.)
PD: soy el autor de la herramienta.
fuente
Puede encontrar uno conveniente aquí:
https://github.com/varra4u/utils4j/blob/master/src/main/java/com/varra/util/StopWatch.java
Uso:
fuente
Prueba esto.
Solución Java Stopwatch completamente funcional
Aquí obtendrá una solución totalmente funcional.
Solo un fragmento de la solución vinculada anteriormente:
Puede crear una clase como el código siguiente y usar el método de inicio y parada de esta clase antes y después de la sección de código, desea medir el tiempo necesario.
}
Gracias.
fuente