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 :
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;
}
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.

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 !