GARANTIR DESCONTO

Fórum calculo do tempo ??? #568336

09/04/2009

0

Alguem sabe como faço para calcular o tempo que demora para realizar um calculo em meu programa? Ele mostra o equivalente de fibonacci para o numero digitado pelo usuario, e quando o numero passa de 40 o tempo de calculo é grande, eu gostaria de calcular esse tempo. se alguem puder me ajudar!!!
Lpuga

Lpuga

Responder

Posts

09/04/2009

Lucas Teixeira

[quote="lpuga"]Alguem sabe como faço para calcular o tempo que demora para realizar um calculo em meu programa? Ele mostra o equivalente de fibonacci para o numero digitado pelo usuario, e quando o numero passa de 40 o tempo de calculo é grande, eu gostaria de calcular esse tempo. se alguem puder me ajudar!!!
System.currentTimeMillis() (verifica se é este o nome) pegue o tempo do sistema antes de comecar a calcular, pegue o tempo depois que terminar, subtraia os valores e barabing!
Responder

Gostei + 0

09/04/2009

Moacy Jr.

faz uma busca aqui no forum que vc acha muito assunto sobre isso... quem tem que falar isso é o volnei. :D
Responder

Gostei + 0

09/04/2009

Marcos Pereira

Procure por um profiler, é a melhor maneira de calcular o tempo porque vai contar o tempo de CPU gasto pelo seu programa. currentTimeMillis não desconsidera o tempo que a CPU gasta com outros processos que estão rodando ao mesmo tempo na sua maquina. valeuz...
Responder

Gostei + 0

09/04/2009

Lpuga

vcs naum poderiam me mostrar como fazer isso??? entedia as funções, mais naum sei usa-las em java
Responder

Gostei + 0

09/04/2009

Paulo Sigrist

long init;
long end;
long diff;


init = System.currentTimeMillis();
/* Coloque aqui seu codigo que demora */
end = System.currentTimeMillis();
diff = end - init;
System.out.println("Demorou " + (diff / 1000) + " segundos");

:!:
Responder

Gostei + 0

09/04/2009

Lpuga

coloquei esse codigo mais deu um erro: end = System.currentTimeMillis(); ^ //////preciso importar alguma biblioteca especifica!? //////veja minha classe como fico, oque devo alterar: public long fibonacci (long n){ long inicio; long end; long diff; inicio = System.currentTimeMillis(); if (n == 0 || n == 1) return n; else return fibonacci (n - 1) + fibonacci (n - 2); end = System.currentTimeMillis(); diff = end - inicio; System.out.println("Demorou " + (diff / 1000) + " segundos"); }
Responder

Gostei + 0

09/04/2009

Carlos Heuberger

Qual foi o erro que deu? []]]
Responder

Gostei + 0

09/04/2009

Lpuga

unreachable statement end = System.currentTimeMillis(); ^ missing return statement } esse erro que ocorreu !
Responder

Gostei + 0

09/04/2009

Paulo Sigrist

mas eh claro que vai dar erro... olhe eu codigo....
public long fibonacci (long n){
long inicio;
long end;
long diff;

inicio = System.currentTimeMillis();

if (n == 0 || n == 1)
return n;
else
return fibonacci (n - 1) + fibonacci (n - 2); // <---- SEU ERRO ESTA AQUI!!

end = System.currentTimeMillis();
diff = end - inicio;
System.out.println("Demorou " + (diff / 1000) + " segundos");
}
Voce esta mandando retornar jah o valor... nunca vai ser executado o codigo abaixo desses if/else eh disso que o compilador esta reclamando. faca assim:
public long fibonacci (long n){
long inicio;
long end;
long diff;
long r;
inicio = System.currentTimeMillis();

if (n == 0 || n == 1)
r = n;
else
r = fibonacci (n - 1) + fibonacci (n - 2); 

end = System.currentTimeMillis();
diff = end - inicio;
System.out.println("Demorou " + (diff / 1000) + " segundos");
return r;
}
Responder

Gostei + 0

09/04/2009

Lpuga

fiz exatamente como vc me passou, mais o tempo naum esta sendo contado, sempre o tempo da 0 segundos, mesmo quando demora varios minutos e apresenta 0 segundos!!!
Responder

Gostei + 0

09/04/2009

Paulo Sigrist

poste seu codigo de novo
Responder

Gostei + 0

09/04/2009

Dadario

Poxa... Que coisa heim... Vamos entender o código e arrumá-lo Lista de fazeres: 1- criar uma classe que execute o Fibonacci 2- criar um método de execução da classe 3- criar método que calcula Fibonacci 4- colocar o medidor de tempo no código
 // Passo 1
public class Fibonacci {

  // Passo 2
  public static void main(String[] argumentos) {

    Fibonacci fibo = new Fibonacci();

    // Passo 4     
    long inicio = System.getCurrentTimeMillis(); 
    fibo.calcula(10);
    long fim = System.getCurrentTimeMillis();

     System.out.println("O tempo gasto foi: " + ((fim - inicio) /1000) + " segundos");
  }
   
   // Passo 3
  public int calcula(int numero) {
     if (numero == 0 || numero == 1) { return numero;}
     return calcula(numero - 1) + calcula(numero - 2);
  }
}
Veja se agora funciona :wink: :wink: :wink: :wink: :wink:
Responder

Gostei + 0

09/04/2009

Carlos Heuberger

duas sugestoes: [list=1][*:4dd3cc9f35]nao divida por 1000 e sim por 1000.0 (real em vez de inteiro) por causa do arredondamento [*:4dd3cc9f35] use System.nanoTime() em vez do currentTimeMillis() (e divida por 1000000.0 para obter milisegundos) [/list] []]]
Responder

Gostei + 0

09/04/2009

Lucas Teixeira

[quote="simu"]use System.nanoTime() em vez do currentTimeMillis() (e divida por 1000000.0 para obter milisegundos)
É bom deixar claro que este método é do Java 5 :!:
Responder

Gostei + 0

09/04/2009

Carlos Heuberger

verdade... se nao tiver o java 5, pode usar o currentTimeMillis, mas chame o seu metodo varias vezes (num loop com talvez 100 ou mais interacoes) para obter um tempo um pouco maior. []]]
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar