Engenharia e Programação de Software
Calculando o Tempo de Execução em Java: Métodos e Exemplos do Mundo Real
Table of Contents
Medir o tempo de execução do código é essencial para otimizar o desempenho em aplicações Java. Ajuda os desenvolvedores a identificar gargalos e melhorar a eficiência. Este artigo explora métodos comuns para calcular o tempo de execução e fornece exemplos práticos.
Usando System.nanoTime ()
O método System.nanoTime()] oferece medição de tempo de alta resolução. Retorna o valor atual do temporizador mais preciso disponível do sistema, em nanossegundos. Para medir o tempo de execução, registre o tempo de início antes de o código ser executado e o tempo final depois. A diferença indica o tempo decorrido.
Exemplo:
[[FLT: 0]]long startTime = System.nanoTime();
// código a medir
long endTime = System.nanoTime();
[[FLT: 0]] longa duração = fimTempo - inícioTempo;
Usando System.currentTimeMillis ()
O método System.currentTimeMillis() fornece o tempo atual em milissegundos. É menos preciso do que mas adequado para medir durações mais longas. Semelhante ao método anterior, registre os tempos de início e fim em torno do bloco de código.
Exemplo:
[[FLT: 0]]long startTime = System.currentTimeMillis();
// código a medir
long endTime = System.currentTimeMillis();
[[FLT: 0]] longa duração = fimTempo - inícioTempo;
Usando a Classe Instantânea do Java
O pacote Instant[] da classe java.time oferece uma abordagem moderna para a medição do tempo. Fornece precisão nanosegundo e é adequado para medir durações.
Exemplo:
[[FLT: 0]]Início instantâneo = Instant.now();
// código a medir
Fim instantâneo = Instant.now();
Duração = Duração.entre(inicial, fim);
Exemplo do Mundo Real
Suponha que você queira medir quanto tempo leva para classificar um array grande. Usando System.nanoTime(), você pode implementar o seguinte:
int[] array = new int[1 000 000];
// lista de povoamentos
[[FLT: 0]]long startTime = System.nanoTime();
Arrays.sort(array);
long endTime = System.nanoTime();
System.out.println("Ordenamento tomado" + (endTime - startTime) + "nanossegundos.");