PDA

View Full Version : calcolo tempi di esecuzione


svitatissimo
29-12-2005, 18:05
Salve ragazzi devo fare un confronto tra algoritmi per quanto riguarda la misura dei tempi di esecuzione e vorrei farlo in java sapete dirmi come fare a valutare il tempo di esecuzione del programma?

okay
29-12-2005, 19:53
Salve ragazzi devo fare un confronto tra algoritmi per quanto riguarda la misura dei tempi di esecuzione e vorrei farlo in java sapete dirmi come fare a valutare il tempo di esecuzione del programma?

ti faccio un esempio in c++
cmq devi usare il tempo:


for(int i=0; i<10000; i++){
//calcola il tempo per il ciclo
float newTime = time();
float dt = newTime - currentTime;
currentTime = newTime;
t += dt;
}

t è il tempo trascorso in secondi totali



for(int i=0; i<100; i++){
//calcola il tempo per il ciclo
float newTime = time();
float dt = newTime - currentTime;
currentTime = newTime;
t1 += dt;
}

t1 è il tempo trascorso in secondi totali

ora confronta t e t1

kingv
29-12-2005, 20:11
in Java:


long inizio = System.currentTimeMillis();

// qui fai la chiamata al metodo che devi misurare

long millis = System.currentTimeMillis()-inizio;



millis è misurato in millisecondi.

svitatissimo
02-01-2006, 18:58
ma in c++ il tempo calcolato è in secondi o millisecondi
? perchè a me servirebbe in millisecondi

okay
02-01-2006, 19:14
ma in c++ il tempo calcolato è in secondi o millisecondi
? perchè a me servirebbe in millisecondi


fai così:

dwSecondi = (timeGetTime() - m_dwStartT) / 1000; //secondi

if(dwSecondi>0)
dwDecimi = (timeGetTime() - dwSecondi)% 10;


... ora avendo i secondi totali puoi ottenere anni, mesi, giorni, ore, secondi e millisecondi facendo gli opportuni calcoli.

per ottenere da subito i millisecondi puoi aggiungere ulteriormente sotto l'if e ancora fare:
dwCentesimi = (timeGetTime() - dwDecimi) % 100;//centesimi di secondo
dwMillesimi = (timeGetTime() - dwCentesimi) % 1000;//millesimi di secondo

... stampa i valori a video magari separati da un punto a 2 cifre peri sec 2 cifre per icentesimi e 3 cifre per i millesimi.

Edit: per azzerare fai:
if (dwSecondi>60){
dwSecondi=0;
m_dwStartT=0;
m_dwStartT = timeGetTime(); //time start secondi
}

p.s. dillo che ti devo dire tutto... e vaì!!


ciao e buon anno