2010-01-24 16 views
1

J'essaie de faire quelques mesures de performance en utilisant Intels RDTSC, et il est tout à fait impair les variations que je reçois pendant différents tests. Dans la plupart des cas mon benchmark en C nécessite 3000000 Mio cycles, cependant, exactement la même exécution peut prendre dans certains cas 5000000, presque le double. J'ai essayé de ne pas avoir de charges de travail intenses fonctionnant en parallèle afin que j'obtienne de bonnes estimations de performance. Quelqu'un peut-il avoir une idée d'où ces énormes variations de temps peuvent provenir? Je sais que des interruptions et des trucs peuvent se produire, mais je ne m'attendais pas à de telles variations de timing! PS: Je l'exécute sur un processeur Pentium avec Linux fonctionnant dessus.Valeurs aberrantes lors de l'évaluation des performances

Merci pour commentaires, John

Répondre

0

Selon this Wikipedia article, le RDTSC (temps de compteur de tampon) ne peuvent pas être utilisés de manière fiable pour l'analyse comparative sur les systèmes multi-core. Il n'y a aucune promesse que tous les cœurs aient la même valeur dans le registre d'horodatage.

Sous Linux, il est préférable d'utiliser la fonction POSIX clock_gettime.

+0

merci, mais je cours mes tests sur une seule machine de base – John

2

Je pense que la réponse est:

Je essayé de ne pas avoir des charges de travail intenses en cours d'exécution en parallèle

Vous avez un contrôle insuffisant sur cela dans un système d'exploitation moderne.

0

Vous devez prendre en compte le cache de la plupart des processeurs modernes. Peut-être qu'un autre processus expulse le contenu de la mémoire cache de votre programme dans le cas où vous avez mesuré le temps d'exécution long. Comme Henk l'a souligné, il se passe beaucoup de choses dans un système d'exploitation moderne que vous ne pouvez pas contrôler.