Tempo de execução de algoritmo

9 respostas
Jauns

Boa noite.

Estou estudando o problema do cavalo, ou passeio do cavalo http://pt.wikipedia.org/wiki/Problema_do_cavalo.

Queria saber uma forma simples de verificar o tempo que o meu algoritmo demorou para achar uma solução.

estou fazendo da seguinte forma:

SimpleDateFormat ft=new SimpleDateFormat("HH:mm:ss,SSS");
		
		Calendar di=Calendar.getInstance();
	
		try {
			Thread.sleep(2000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		
		Calendar df=Calendar.getInstance();
		
		long dif=(df.getTimeInMillis()-di.getTimeInMillis());
		
		System.out.println(ft.format(dif));

Coloquei uma Thread.sleep para simular. so que, quado sai o resultado sai da seguinte forma:

:arrow: 21:00:02,000
[b]


como eu faço para corrigir a SAIDA para :?:?

:arrow: 00:00:02,000

[/b]

eu não posso alterar o formato so para “mm:ss,SSS” pois qdo for execultar em uma maquina de baixo processamento pode levar mais de 1 hora.

Existe uma outra forma mais simples para verificar este tempo de execução? :?: :?: :?:

9 Respostas

S

Dê uma olhada nesse método, isso deve ajudar
System.currentTimeMillis();
Exemplos:
http://www.guj.com.br/posts/list/73921.java

Jauns

santos.fernando:
Dê uma olhada nesse método, isso deve ajudar
System.currentTimeMillis();
Exemplos:
http://www.guj.com.br/posts/list/73921.java

Obrigado pela dica, porém não deu certo.

[color=red]A saída continuo saindo :arrow: 21:00:02,000[/color]

SimpleDateFormat ft = new SimpleDateFormat("HH:mm:ss,SSS");

		long di = System.currentTimeMillis();

		try {
			Thread.sleep(2000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}

		long df = System.currentTimeMillis();

		long dif = df - di;

		System.out.println(ft.format(dif));
pedroroxd

Nunca tinha ouvido falar desse desafio do cavalo…
Só por curiosidade, o que seu algorítimo ta fazendo? calculando as posições que ele deve passar?

Jauns

pedroroxd:
Nunca tinha ouvido falar desse desafio do cavalo…
Só por curiosidade, o que seu algorítimo ta fazendo? calculando as posições que ele deve passar?

Sim, o objetivo é passar em todas as casas do tabuleiro sem repetir nenhuma casa. Estou trabalhado com força bruta mesmo, tentativa de acerto erro, o que fiz foi atraves de recursividade, olhar sempre se o o cavalo tem um movimento posterior que nao deixe o mesmo sem uma futura jogada, se caso nao, ele vai para outra casa, a escolha das casas esta sendo feita por random.

pedroroxd

Ah sim…
fez só com console ou fez com imagens e tal?

Jauns

pedroroxd:
Ah sim…
fez só com console ou fez com imagens e tal?

Somente via console… Mas se tudo der certo e se sobrar um tempo quero coloca-lo de forma grafica.

O meu grande problemas agora, e acerta o formato de saida do tempo de execução que ta osso.

rafaeldiego

Amigo, resgatei uma coisa que fiz há mais ou menos 1 ano e meio… mas que funcionou…
talvez possa te ajudar, segue abaixo:

essa parte, coloca assim que carregar a página, ou a a execução das análises:

long inicio = System.currentTimeMillis();

logo depois que exibir, coloque o trecho abaixo, pois é a última ação da página/execução:

long fim  = System.currentTimeMillis();
	long tempo = fim - inicio;
	
	long segundos = tempo / 1000;
	long minutos = segundos / 60;
	segundos = segundos % 60;
	long horas = minutos / 60;
	minutos = minutos % 60;
	String tempo2 = String.format ("%02d:%02d:%02d", horas, minutos, segundos); // Exemplo: "12:34:56"

e então voce imprime essa String tempo2 aí e mostra o tempo em segundos…

walacy

Se for só pra saber quanto tempo levou a execução e não necessitar desses dados na APP, usa um JUnit… :wink:

class MyClass extends TestCase {

     @Test
     public void testMyMethod() { //manter prefixo "test"
           //Algoritmo....
     }

}

No eclipse, dá Run as… JUnit Test…

pedroroxd

Vai ser legal no gráfico, dando um delay de 1 segundo por movimento…
Em quantos movimentos vc xegou?

Criado 27 de março de 2010
Ultima resposta 29 de mar. de 2010
Respostas 9
Participantes 5