Análise Empírica

1 resposta
H

Alguém já fez alguma análise empírica de um programa???
Quero contar o tempo do método resul

start=new Date().getTime();
			boolean resul=retang.LineClip(retang.xstart,retang.ystart,retang.xend,retang.yend,retang.xleft,retang.xright,retang.ybottom,retang.ytop);
			try {
				
				Thread.sleep(100);
			}
			catch (InterruptedException ie) {
				System.out.println("ERRO no sleep!");
			}
				
			end=new Date().getTime();
			System.out.println(end-start);

Porém o método executa mto rapidamente e tive que colocar esse sleep.
Está certo o código????
Acho que para métodos muito rápidos fica difícil fazer a análise empírica né?

1 Resposta

T

Ah, você quer medir o tempo, certo?

a) Se você sabe que a tal rotina leva mais de 10 ms para ser executada, você pode usar algo como

long t = System.currentTimeMillis();
chame_sua_rotina();
t = System.currentTimeMillis() - t;
System.out.println ("Levou " + t + " ms");

b) Se ela levar menos tempo que isso, System.currentTimeMillis() não é suficientemente precisa (culpa normalmente do sistema operacional, não do Java). Você pode chamar a sua rotina 1000 vezes, por exemplo, e dividir o tempo por 1000.

long t = System.currentTimeMillis();
for (int i = 0; i < 1000; ++i) {
    chame_sua_rotina();
}
t = System.currentTimeMillis() - t;
System.out.println ("Levou " + (t / 1000.0) + " ms em média");

c) Obviamente o que estou falando é uma simplificação grosseira da realidade (há a compilação just-in-time, que pode levar algum tempo, e outras coisas mais doidas que podem ocorrer). Você precisa ver algum site como o http://www.javaperformancetuning.com/ )

Criado 23 de novembro de 2004
Ultima resposta 24 de nov. de 2004
Respostas 1
Participantes 2