Question

Est-il possible de déterminer le débit d'une application sur un processeur à partir des comptages de cycles (cycles d'instruction du processeur) consommé par l'application? Si oui, comment le calculer?

Était-ce utile?

La solution

Si le processus est entièrement lié CPU, alors vous diviser la vitesse du processeur par le nombre de cycles pour obtenir le débit.

En réalité, peu de processus sont entièrement liée au CPU que, dans ce cas, vous devez prendre d'autres facteurs (vitesse du disque, la vitesse de la mémoire, sérialisation, etc.) compte.

Autres conseils

simple:

#include <time.h>
clock_t c;
c = clock(); // c holds clock ticks value
c = c / CLOCKS_PER_SEC; // real time, if you need it

Notez que la valeur que vous obtenez est une approximation, pour plus d'informations voir l'homme clock() page .

Certains processeurs ont des registres internes de performance qui vous permettent de recueillir toutes sortes de statistiques intéressantes, telles que les cycles d'instruction (parfois même sur une base par unité d'exécution), manque de cache, # de cache / mémoire lecture / écriture, etc. vous pouvez accéder à ces directement, mais en fonction de ce CPU et OS que vous utilisez peut-il bien être des outils existants qui gèrent tous les détails pour vous via une interface graphique. Souvent, un bon outil de profilage aura un support pour les registres de performance et vous permettent de statistiques Collectionnez-les utiliser.

Si vous utilisez le Cortex-M3 TI / Luminary Micro, vous pouvez utiliser le driverlib délivrée par TI / Luminary Micro. En utilisant les fonctions sysTick vous pouvez régler le SysTickPeriod à 1 cycle de processeur: Vous avez 1 horloge du processeur entre les interruptions. En comptant le nombre d'interruptions que vous devriez obtenir une « estimation assez près » de combien de temps un bloc fonction ou prise.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top