Bonjour, dans un code existant que je dois maintenir un calcul est fait pour déterminer l'utilisation CPU de certaines parties du programme qui sont très brèves (en dizaines/centaines de microsecondes).
Le code utilise la fonction getrusage :
Classique, le code enregistre la valeur courante au début de la période que l'on veut mesurer puis fait la différence avec la valeur courante à la fin de cette période.
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 struct rusage usage; if (getrusage(RUSAGE_THREAD, &usage) == 0) { // calculate time in microseconds currentCpuUsage = usage.ru_utime.tv_sec*1000000 + usage.ru_utime.tv_usec + usage.ru_stime.tv_sec*1000000 + usage.ru_stime.tv_usec; }
Le problème, les deux valeurs sont la plupart du temps égales (différence nulle donc) et parfois avec une différence de 4000 (4 ms donc). Est-ce que c'est une limitation de la précision ? Est-ce qu'il y a quelque chose à faire dans le code ou bien un autre moyen de récupérer l'utilisation CPU avec une meilleure précision ?
Merci d'avance !
Partager