View Full Version : [C++]: misuare prestazioni algoritmi
Salve devo fare dei test sperimentali su un algoritmo e misuare i tempi al variare dei paramtri solo che utilizzando:
start = clock();
//---> Algoritmo da misurare
end = clock();
tempo=((double)(end-start))/CLOCKS_PER_SEC;
cout << "\n...tempo di ricerca: " << tempo << endl << endl;
è talmente veloce che mi da sempre 0.
c'è qualche metodo che posso misuare anche i tempi del tipo 0.004?
wizard1993
29-12-2008, 10:03
Salve devo fare dei test sperimentali su un algoritmo e misuare i tempi al variare dei paramtri solo che utilizzando:
start = clock();
//---> Algoritmo da misurare
end = clock();
tempo=((double)(end-start))/CLOCKS_PER_SEC;
cout << "\n...tempo di ricerca: " << tempo << endl << endl;
è talmente veloce che mi da sempre 0.
c'è qualche metodo che posso misuare anche i tempi del tipo 0.004?
il cast è errato, prova così
tempo=(double)(end-start)/CLOCKS_PER_SEC;
no il risultato non è cambiato.
In effetti sto misurando le prestazioni di un dizionario che ho implementato con il metodo hash table ad indirizzamento aperto, quando carico la lista di 300000 termini essendo i tempi maggiori di 1 secondo il tempo lo misira correttamente, ma le operazioni di ricerca sono talmente veloci che mi da sempre tempo = 0. io dovrei verificare i tempi di search hit e search miss cambiando il fattore di carico della tabella.
il cast è errato, prova così
Non mi sembra errato, c'è solo una parentesi in più ;)
Prova un po' a stampare end e start (sono interi), mi sembra strano che sia così veloce.
i tempi start ed end sono uguali sia per un search hit che un search miss sulla stessa parola inserita...
inserito elicottero
parola trovata
start : 17500 end: 17500
inserito elicotero
parola non trovata
start : 88609 end: 88606
questo con un fattore di carico alpha 1/2.
provando con un fattore 1 riesco a vedere la differenza soltanto in una serach miss di 0.002 ma la serach hit è sempre 0.
quindi il calcolo del tempo lo fa bene ma io vorrei annotare sui test sperimentali che sto facendo anche oscillazioni minime prossime allo zero..
Eh ci credo, lo fai su una sola operazione, è normale che siano uguali, devi farlo su un numero molto grande di operazioni, poi puoi fare la media.
quindi quando carico i termini dal file di testo ci mette all'incirca 3.5 secondi e qui fa 290000 inserimenti....quindi i test li posso fare al momento del caricamento. giusto?
io invece volevo misurarlo su una singola operazione... e questa cosa non è possibile.
Attenzione che il caricamento è anche vincolato dalla lettura dei valori dal file. Dovresti prima mettere tutto il file in memoria, fai partire il timer e dopo li carichi.
io invece volevo misurarlo su una singola operazione... e questa cosa non è possibile.
E' possibile, ma devi fare tante ricerche e poi fare la media. Con i valori del file caricati in memoria puoi fare tutte le ricerche che vuoi anche in modo casuale.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.