2010-11-24 98 views
1

Une façon courante pour mesurer le temps écoulé est:La synchronisation basée sur l'horloge est-elle fiable lorsque la fréquence du processeur est variable?

const clock_t START = clock(); 
// ... 
const clock_t END = clock(); 
double T_ELAPSED = (double)(END - START)/CLOCKS_PER_SEC; 

Je sais que ce n'est pas la meilleure façon de mesurer en temps réel, mais je me demande si cela fonctionne sur un système avec un processeur à fréquence variable. Est-ce juste faux?

+0

Vraisemblablement, CLOCKS_PER_SEC est défini dans un fichier d'en-tête comme une valeur constante. Si le paramètre sous-jacent représenté par la valeur peut changer et que vous ne modifiez pas la constante en conséquence, alors, votre mesure de temps écoulé ne sera pas correcte. – sizzzzlerz

+0

Si vous effectuez un benchmarking, il est préférable de régler le régulateur de fréquence du processeur sur "performance", au moins temporairement, de sorte que vous puissiez obtenir des mesures précises, non affectées par les variations de la vitesse d'horloge. –

Répondre

1

Il existe des architectures système qui modifient la fréquence du CPU, mais ont une fréquence séparée et constante conduire une horloge système. On pourrait penser qu'une fonction clock() retournerait un temps indépendant de la fréquence du CPU mais cela devrait être vérifié sur chaque système sur lequel le code est destiné à fonctionner.