opa, gostaria de saber se tem como eu pegar apenas o tempo em que o meu programa esteve em execução no Sistema Operacional, sem contar as interrupções que o mesmo gera…Em outras palavras quero o tempo real que ele demora pra rodar sem nenhuma interferencia.
estou usando a chamada: System.currentTimeMillis() , eu faço uma no inicio do programa e uma no fim e daí subtraio os tempos obtidos, porém ela não serve para tal aplicação, prq eu preciso saber o tempo o mais proximo do exato possivel que é para efetuar uma comparação entre algoritmos…nao sei se ficou clara minha duvida aí, mas quem pude ajudar, por favor me ajude…heheeheh…
Não sei se o uso de Threads poderia otimizar um pouco o seu problema.
Caso queira dar uma olhada tem u m tutorial ótimo feito pelo Jeveaux aqui no portal.
Dê uma conferida, ou melhor, procure comandos de interrupção do sistema em Java. Essas interrupções forçarão o seu pc a rodar sem nenhuma interrupção o seu código. Mas preste atenção quando for usá-la, pois se no fim do seu programa vc não habilitar elas corretamente, a única solução vai ser religar o pc…
Espero ter ajudado…
Falow!
T
thingolPJ
Se você estiver usando o Java 5.0, você pode usar ThreadMXBean. Veja o exemplo abaixo para saber quanto tempo de CPU foi gasto em uma determinada thread.
importjava.lang.management.*;classDoNothing{publicDoNothing(){}publicvoiddoNothing(intx){x=x;}}classSimpleThreadimplementsRunnable{intiterations;publicSimpleThread(intpIterations){iterations=pIterations;}staticThreadMXBeantmb=ManagementFactory.getThreadMXBean();publicvoidrun(){DoNothingdn=newDoNothing();System.out.printf("Thread %d started.%n",iterations);longt0=tmb.getCurrentThreadUserTime();for(inti=0;i<iterations;++i){for(intj=0;j<10000000;++j){dn.doNothing(j);}}t0=tmb.getCurrentThreadUserTime()-t0;System.out.printf("Thread %d stopped. Took %d USER CPU ms %n",iterations,t0/1000000);}}classTestThreadTiming{publicstaticvoidmain(String[]args){intnThreads=6;Thread[]thr=newThread[nThreads];for(inti=0;i<nThreads;++i){thr[i]=newThread(newSimpleThread(i+1));}for(inti=0;i<nThreads;++i){thr[i].start();}for(inti=0;i<nThreads;++i){try{thr[i].join();}catch(InterruptedExceptionex){ex.printStackTrace();}}System.out.println("All threads stopped. Exiting...");}}