Optimiser un programme
La démarche d'optimisation (mesurer, cibler, changer une chose, mesurer encore), les cinq leviers, la mémoïsation, la loi d'Amdahl et le compromis entre temps et mémoire.
- 23 cartes
- 6 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Les chiffres
- Mises en situation
- Comprendre
Quelques cartes du deck
Optimiser après avoir mesuré : de quoi s'agit-il ?
Voir la réponse
Principe selon lequel on ne modifie un code pour le rendre plus rapide qu'après avoir mesuré où il perd son temps, puis on vérifie par une nouvelle mesure que le changement a servi.
Une optimisation rend souvent le code plus difficile à lire ; elle n'est justifiée que par un gain mesuré sur la partie qui pèse.
Combien de fois le corps de
fibs'exécute-t-il pourfib(6)?
```python
def fib(k):
return k if k < 2 else fib(k - 1) + fib(k - 2)`- 25
- 6
- 13
- 64
Voir la réponse
25
Les mêmes sous-problèmes sont recalculés :
fib(2)seul est évalué 5 fois. Le nombre d'appels croît comme la suite elle-même (exponentiel). Aveclru_cache, chaque valeur de 0 à 6 n'est calculée qu'une fois : 7 exécutions.La démarche d'optimisation : …, cibler le point chaud, changer une seule chose, puis … à nouveau.
Voir la réponse
La démarche d'optimisation : mesurer, cibler le point chaud, changer une seule chose, puis mesurer à nouveau.
Changer plusieurs choses à la fois empêche de savoir laquelle a servi, ou laquelle a nui. La seconde mesure peut conclure qu'il faut annuler.
Mémoïsation : de quoi s'agit-il ?
Voir la réponse
Technique qui range le résultat d'une fonction pour chaque argument déjà rencontré, afin de ne pas refaire le même calcul.
Elle ne vaut que pour une fonction pure (même argument, même résultat) et échange de la mémoire contre du temps. En Python :
functools.lru_cache.