Analyse des performances

Pourquoi, lors de la mesure du temps d'exécution d'un programme, répète-t-on souvent la mesure en écartant les premiers résultats ?

  1. AParce que les premiers résultats de calcul sont toujours faux
  2. BParce qu'au début, les caches sont vides, des fichiers sont lus et une compilation à l'exécution a lieu, ce qui ralentit et rend les mesures dispersées
  3. CParce que la répétition d'une même mesure fait construire au CPU un circuit plus rapide
Afficher la réponse et l'explication

Réponse : B. Parce qu'au début, les caches sont vides, des fichiers sont lus et une compilation à l'exécution a lieu, ce qui ralentit et rend les mesures dispersées

Lors de la première exécution, les caches, le TLB et le prédicteur de branchement partent d'un état vide, les fichiers absents du cache de l'OS doivent être lus sur disque, et les langages à compilateur JIT effectuent la traduction en code machine. Les premières exécutions sont donc plus lentes. De plus, les mesures fluctuent à cause des autres programmes, des interruptions et des variations de fréquence dues à la température : il importe de mesurer plusieurs fois et d'indiquer moyenne ou médiane ainsi que la dispersion.

S'entraîner sur ce thème Retour au thème

Autres questions sur Analyse des performances

  1. Quelle association entre le problème posé par une mesure unique d'un traitement très court et sa solution est correcte ?
  2. Quelle est la différence correcte entre « temps réel écoulé » (wall-clock time) et « temps CPU » ?
  3. Quelle description du débit (throughput) et de la latence, indicateurs de performance d'un serveur, est correcte ?
  4. Pourquoi, pour évaluer le temps de réponse d'un service Web, examine-t-on souvent le 99e percentile (seuil des 1 % les plus lents) et pas seulement la moyenne ?
  5. Un serveur reçoit 100 requêtes par seconde, chacune prenant en moyenne 0,2 seconde à traiter (régime stationnaire). Combien de requêtes sont en moyenne en cours de traitement simultanément dans le serveur (loi de Little) ?