Changeset 2624 in Sophya
- Timestamp:
- Sep 30, 2004, 3:22:10 PM (21 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/SysTools/timing.c
r2212 r2624 32 32 #include "timing.h" 33 33 34 static clock_t CPUT0, CPUT; 35 static time_t ELT0, ELT; 36 34 static clock_t CPUT0=0, CPUT=0; 35 static time_t ELT0=0, ELT=0; 36 /*------- modifs Christophe 30/09/04 37 On somme nous memes les temps partiels pour avoir une autre 38 mesure du temps CPU total. En effet, pour des jobs longs 39 clock()-CPUT0 depasse la possibilite de stockage d'un entier 40 32 bits car clock() renvoit des microsecondes. 41 Par exemple pour un job de 20h = 72e+9 micro-secondes > 2^32 42 (Ca ne marche plus pour des jobs > 2146 sec ~= 2^32 microsec) 43 Seul un entier 64 bits pourrait donner un resultat correct 44 mais il n'existe pas sur toutes les plateformes. 45 -------*/ 46 static double tcalt_sum = 0.; 37 47 38 48 /* Nouvelle-Fonction */ … … 47 57 CPUT0 = CPUT = clock(); 48 58 ELT0 = ELT = time(NULL); 59 tcalt_sum = 0.; 49 60 return; 50 61 } … … 57 68 void PrtTim(const char * Comm) 58 69 { 59 floattcal,tcalt;70 double tcal,tcalt; 60 71 clock_t cput; 61 72 time_t elt; 62 int etm,etmt; 63 64 elt = time(NULL); cput = clock(); 65 tcalt = ( (float)(cput) - (float)(CPUT0) ) / (float)(CLOCKS_PER_SEC); 66 tcal = ( (float)(cput) - (float)(CPUT) ) / (float)(CLOCKS_PER_SEC); 73 unsigned long etm,etmt; 74 75 cput = clock(); 76 tcalt = ( (double)(cput) - (double)(CPUT0) ) / (double)(CLOCKS_PER_SEC); 77 tcal = ( (double)(cput) - (double)(CPUT) ) / (double)(CLOCKS_PER_SEC); 78 79 elt = time(NULL); 67 80 etm = elt - ELT; 68 81 etmt = elt - ELT0; 69 printf("%s CPUTime: Total= %g (Partial= %g) Sec. \n", 70 Comm, tcalt, tcal); 82 /*------- modifs Christophe 30/09/04 83 - tcalt_sum en 1/100 ieme de seconde: 84 On imprime des Secondes que l'on somme N fois 85 -> on se donne une precision a 1/100 de Seconde 86 - Au moment ou clock()>2^32 tcal devient negatif 87 ==> On ne somme donc pas tcal et on TRICHE en sommant "etm" 88 (pour etre vrai il faut que le process ait 100% du CPU !) 89 -------*/ 90 if(tcal>0.) tcalt_sum += tcal*100.; else tcalt_sum += (double)etm*100.; 91 92 printf("%s CPUTime: Total= %g (Sum~= %.1f) (Partial= %g) Sec. \n", 93 Comm, tcalt, tcalt_sum/100., tcal); 71 94 printf("ElapsedTime(hh:mm:ss): Total= %02d:%02d:%02d ", 72 95 etmt/3600, (etmt%3600)/60, etmt%60); 73 96 printf(" (Partial= %02d:%02d:%02d)\n", 74 97 etm/3600, (etm%3600)/60, etm%60); 75 98 76 99 ELT = elt; 77 100 CPUT = cput;
Note:
See TracChangeset
for help on using the changeset viewer.