Il n'y a pas de temps d'exécution minimal pour un exécutable C ou C++, car le temps d'exécution dépend de nombreux aspects spécifiques à la plate-forme, tels que
- Fréquence d'horloge du processeur.
- Cycles d'horloge par instruction.
- Optimisation de l'exécution du processeur interne.
- Interruptions.
- Jeu d'instructions / capacités du processeur.
Certains processeurs prennent en charge la multiplication, d'autres non. Les processeurs qui ne prennent pas en charge la multiplication mettront plus de temps à exécuter un programme qu'un processus qui dispose d'instructions de multiplication. Il en va de même pour la virgule flottante.
La vitesse de fonctionnement interne d'un processeur varie. Il existe une unité de mesure commune appelée "cycle d'horloge". La plupart des fournisseurs de processeurs spécifient la durée d'une instruction en cycles d'horloge. Cette mesure peut s'avérer difficile en raison d'un support interne, tel que la gestion de la mémoire cache.
Certains processeurs sont dotés d'une logique qui permet d'optimiser l'exécution des instructions ou des schémas d'instructions. L'une de ces optimisations est prédiction des branches .
De nombreuses plates-formes disposent d'interruptions. Par exemple, il peut y avoir une interruption "system tick" qui permet au système d'exploitation de savoir quand passer l'exécution à un autre programme. Certaines interruptions ne sont pas aussi périodiques, par exemple lorsque des entrées/sorties se produisent. Un temps d'exécution minimum ne peut être garanti lorsque le programme est interrompu.
La fixation d'un temps d'exécution minimum aurait des conséquences néfastes sur la portabilité des langages C et C++. Certaines plates-formes voudraient exécuter le code plus rapidement que le temps minimum. D'autres plateformes pourraient ne pas être en mesure d'atteindre un temps d'exécution minimum (mais elles pourraient bénéficier d'un langage de haut niveau comme le C).
Par ailleurs, comment le temps serait-il mesuré ?
Le temps d'exécution minimal s'applique-t-il aux boucles de temporisation ou à l'interrogation ?