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.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Les chiffres
  5. Mises en situation
  6. 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 fib s'exécute-t-il pour fib(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). Avec lru_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.