Oppure

Loading
27/12/10 14:36
2_rici
Salve a tutti,
stò sviluppando un piccolo programma che raggruppa in cartelle diverse una raccolta di foto in base a cosa raffigurano.
L'obbiettivo più che altro è vedere i miglioramente dei tempi parallelizzandolo.
Soltanto che non riesco a prendere il tempo, non sono pratichissimo del C++ però ogni volta che avevo bisogno dei tempi ho sempre utilizzato con successo la libreria <time.h> questa volta il risultato che mi da è sempre 0.000000 e non capisco perchè.
Sicuramente non è perchè il tempo è troppo piccolo per essere misurato in quanto la terza funzione impiega all'incirca 7minuti al momento.
Posto il codice soltanto del main in quanto le funzioni sono lunghe e non penso possano servire.

int main() {
int a;
int b = 0;	
clock_t start_c,end_c, start_s, end_s, start_m, end_m;
double tempo_c = 0, tempo_s = 0, tempo_m = 0;

do {
printf("Numero 1: convert \n");
printf("Numero 2: shift \n");
printf("Numero 3: Similarity \n");
printf("Numero 0: Exit\n");
scanf("%d", &a);
printf("\n");

switch (a) {  
	
   	case 1: start_c=clock(); 
   	converti_raccolta ();	           
   	cout << "finished conversion" << endl;
   	end_c=clock();
        tempo_c=((double)(end_c-start_c))/CLOCKS_PER_SEC;	
        cout << tempo_c << endl;
   	break;
	
	case 2: start_s=clock();
	sift();	
   	cout << "finished conversion" << endl;
   	end_s=clock();
        tempo_s=((double)(end_s-start_s))/CLOCKS_PER_SEC;	
        cout << tempo_s << endl;
   	break;

	case 3: start_m = clock();
	Similarity ();
	end_m = clock();
	tempo_m=((double)(end_m-start_m))/CLOCKS_PER_SEC;
	cout << tempo_m << endl;
	break;
	
	case 0: b = -1;
	break;
	
	default: printf (" numero non in lista ");
	break; 
	
		}
	} while (b==0); 
}

Ultima modifica effettuata da 2_rici 27/12/10 14:39
aaa
27/12/10 15:47
Pitagora
devi usare la funzione difftime: cplusplus.com/reference/clibrary/ctime/difftime/
aaa
28/12/10 12:32
2_rici
comoda difftime, io odio dover castare : )
comunque usando solo difftime non funziona, quindi il problema mi è sembrato lampante della funzione clock ().
Infatti se prendo i tempi con
time (&start);
time (&end);
difftime (end, start);
 

funziona !

non so se qualcuno potrà confermare ma mi sa che clock() ha qualche problema nel caso nel segmento di codice da "misurare" ci sono chiamate a funzioni !

grazie mille comunque, in questo modo ho risolto : )
Ultima modifica effettuata da 2_rici 28/12/10 12:33
aaa