J'essaye de mesurer le temps pris par des processus dans le programme C++ avec linux et Vxworks. J'ai remarqué que clock_gettime (CLOCK_REALTIME, timespec) est assez précis (résolution d'environ 1 ns) pour faire le travail sur beaucoup d'Oses. Pour une question de portabilité, j'utilise cette fonction et l'exécute sur Vxworks 6.2 et Linux 3.7. J'ai essayé de mesurer le temps pris par une simple impression:comment exécuter Clock-gettime correctement dans Vxworks pour obtenir l'heure exacte
#define <timers.h<
#define <iostream>
#define BILLION 1000000000L
int main(){
struct timespec start, end; uint32_t diff;
for(int i=0; i<1000; i++){
clock_gettime(CLOCK_REALTME, &start);
std::cout<<"Do stuff"<<std::endl;
clock_gettime(CLOCK_REALTME, &end);
diff = BILLION*(end.tv_sec-start.tv_sec)+(end.tv_nsec-start.tv_nsec);
std::cout<<diff<<std::endl;
}
return 0;
}
Je compilé ceci sur Linux et VxWorks. Pour Linux, les résultats semblaient logiques (moyenne de 20 μs). Mais pour Vxworks, j'ai beaucoup de zéros, puis 5000000 ns, puis beaucoup de zéros ... PS, pour vxwroks, j'ai couru cette application sur ARM-cortex A8, et les résultats semblent aléatoires ont-ils vu la même chose bug avant,
[Ce] (https://stackoverflow.com/questions/13474000/arm-performance-counters-vs-linux-clock-gettime) ressemble à moi, peut-être le problème est avec la plate-forme cible et non VxWorks. – Steeve