Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problema calcolo tempo esecuzione programma
Forum - C/C++ - Problema calcolo tempo esecuzione programma

Avatar
2_rici (Normal User)
Newbie


Messaggi: 11
Iscritto: 16/12/2010

Segnala al moderatore
Postato alle 15:36
Lunedì, 27/12/2010
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.

Codice sorgente - presumibilmente C#

  1. int main() {
  2. int a;
  3. int b = 0;     
  4. clock_t start_c,end_c, start_s, end_s, start_m, end_m;
  5. double tempo_c = 0, tempo_s = 0, tempo_m = 0;
  6.  
  7. do {
  8. printf("Numero 1: convert \n");
  9. printf("Numero 2: shift \n");
  10. printf("Numero 3: Similarity \n");
  11. printf("Numero 0: Exit\n");
  12. scanf("%d", &a);
  13. printf("\n");
  14.  
  15. switch (a) {  
  16.        
  17.         case 1: start_c=clock();
  18.         converti_raccolta ();              
  19.         cout << "finished conversion" << endl;
  20.         end_c=clock();
  21.         tempo_c=((double)(end_c-start_c))/CLOCKS_PER_SEC;      
  22.         cout << tempo_c << endl;
  23.         break;
  24.        
  25.         case 2: start_s=clock();
  26.         sift();
  27.         cout << "finished conversion" << endl;
  28.         end_s=clock();
  29.         tempo_s=((double)(end_s-start_s))/CLOCKS_PER_SEC;      
  30.         cout << tempo_s << endl;
  31.         break;
  32.  
  33.         case 3: start_m = clock();
  34.         Similarity ();
  35.         end_m = clock();
  36.         tempo_m=((double)(end_m-start_m))/CLOCKS_PER_SEC;
  37.         cout << tempo_m << endl;
  38.         break;
  39.        
  40.         case 0: b = -1;
  41.         break;
  42.        
  43.         default: printf (" numero non in lista ");
  44.         break;
  45.        
  46.                 }
  47.         } while (b==0);
  48. }


Ultima modifica effettuata da 2_rici il 27/12/2010 alle 15:39
PM
Avatar
Pitagora (Member)
Expert


Messaggi: 367
Iscritto: 12/06/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 16:47
Lunedì, 27/12/2010

PM
Avatar
2_rici (Normal User)
Newbie


Messaggi: 11
Iscritto: 16/12/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 13:32
Martedì, 28/12/2010
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
Codice sorgente - presumibilmente Plain Text

  1. time (&start);
  2. time (&end);
  3. 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 il 28/12/2010 alle 13:33
PM