2011-07-11 23 views
26

Para aquellos que están familiarizados con Java, tengo una aplicación en la que he estado trabajando y me acabo de dar cuenta de que el programa tiene que devolver un valor en menos de un minuto, pero no sé cómo encontrarlo o mostrarlo el tiempo necesario para ejecutar el programa Cualquier ayuda con esto sería muy apreciada. Gracias¿Cómo encontrar el tiempo necesario para ejecutar el programa Java?

+0

¿Quiere decir "Cómo encontrar el tiempo necesario para ejecutar el programa Java?" ? –

+0

@Harry Joy, sí, eso es exactamente lo que quiero decir. – MK1

+0

Lo siento, pero su pregunta no es lo suficientemente clara. Creo que el eclipse es irrelevante aquí. El tiempo de ejecución también es irrelevante porque es confuso. JDK tiene clase Runtime y puedes obtener su instancia singleton invocando Runtime.getRuntime() pero parece que no es lo que estás buscando. Intente volver a pensar su pregunta y vuelva a escribirla. – AlexR

Respuesta

67
long startTime = System.nanoTime(); 
//code 
long endTime = System.nanoTime(); 
System.out.println("Took "+(endTime - startTime) + " ns"); 

Ver

+2

Gracias Jigar. Tu respuesta es realmente al punto. – chepukha

+0

hay una razón para ;; y Sysout? – user227353

+0

no, eso es un error tipográfico, corregido –

12

No hay manera integrada para ver por cuánto tiempo el programa ha estado funcionando. Sin embargo, al principio del programa, puede almacenar la hora actual, de modo que en algún momento más tarde pueda ver cuánto tiempo ha transcurrido.

public class MyProgram { 
    private static long startTime = System.currentTimeMillis(); 

    public static void main(String[] args) { 
     // Do stuff... 

     // At the end 
     long endTime = System.currentTimeMillis(); 
     System.out.println("It took " + (endTime - startTime) + " milliseconds"); 
    } 
} 
1

Si lo que desea es saber cuánto tiempo se ejecuta el programa de System.currentTimeMillis uso() en el comienzo y el final de su programa.

0

Se trata de un caso de uso típico de aspectos, por ejemplo usando Spring AOP:

@Aspect 
public class TimerAspect { 

    private static final Logger LOG = Logger.getLogger(TimerAspect.class); 

    @Around("com.xyz.myapp.MyClass.myMethod()") 
    public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable { 
     long startTime = System.nanoTime(); 
     Object retVal = pjp.proceed(); 
     long endTime = System.nanoTime(); 
     LOG.info(String.format("Call to %s.%s with args %s took %s ns", pjp.getTarget(), pjp.getSignature(), Arrays.toString(pjp.getArgs()), endTime - startTime)); 
     return retVal; 
    } 
} 

Y en su contexto de aplicación:

<aop:aspectj-autoproxy/> 
<bean id="myAspect" class="org.xyz.TimerAspect"/> 
1

Si usted tiene la primavera como la dependencia de su proyecto (o don' Te importa agregarlo), puedes usar StopWatch. Como su nombre indica, una vez inicializado contará el tiempo hasta que lo detenga. A continuación, puede verificar el tiempo de una tarea. Múltiples cronómetros se pueden usar simultáneamente para realizar múltiples tareas manteniendo el código limpio.

Además de mantener su código limpio, StopWatches ayuda a formatear la hora y otros métodos de utilidad.

public void myMethod(){ 
    StopWatch stopWatch = new StopWatch(); 

    stopWatch.start("Task1"); 
    // ... 
    // Do my thing 
    // ... 
    stopWatch.stop(); 
    System.out.println("Task executed in " + StopWatch.getTotalTimeSeconds() + "s"); 
} 
Cuestiones relacionadas