Un processeur exécute une instruction en nanoseconde
Exercice d'entraînement · niveau 3 (difficile) · NSI (première), chapitre 9 — Machines, systèmes et réseaux · Circuits et langage machine
Énoncé
Un processeur exécute une instruction en nanoseconde. On lui donne le programme de boucle du cours, avec et .
- Exprimer en fonction de le nombre d'instructions exécutées.
- Combien de temps pour ?
- Le même calcul « décrémenter jusqu'à zéro » écrit en Python prend environ s pour . Commenter l'écart, sans conclure que Python « est mauvais ».
Corrigé
1. Deux CHARGE au début, un RANGE à la fin ; le test fois, le corps ( et ) fois chacun :
Contrôle : donne , ce qu'on avait compté à la main dans l'exercice de TD ; donne , le programme qui n'entre jamais dans la boucle.
2. instructions, soit seconde.
3. Le rapport est d'environ . Il ne mesure pas une qualité de langage : il mesure ce qu'une instruction Python fait par rapport à une instruction machine. Exécuter n = n - 1 en Python, c'est retrouver l'objet entier, vérifier son type, allouer un nouvel objet, mettre à jour la variable — des dizaines d'instructions machine là où le processeur en fait une. En échange, Python garantit ce que le langage machine ne garantit pas : pas de débordement d'entier, pas d'écriture hors mémoire, un message d'erreur plutôt qu'un plantage.
La conclusion honnête : on choisit un niveau de langage, pas une qualité. Le chapitre 7 en donne l'autre moitié : changer d'algorithme fait gagner des facteurs , là où changer de langage en fait gagner .
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.