Vous avez écrit un code Python réalisant des calculs, mais vous constatez que ce dernier est un peu lent pour fournir les résultats. Vous avez affiné vos algorithmes, dérécursifié vos fonctions, mais rien n'y fait ? Il reste la mise en cache…
La mise en cache (ou memoization), consiste à stocker des résultats de calculs en mémoire (aussi bien sur une mémoire volatile comme la RAM qu'une mémoire non volatile comme un disque dur) de manière à pouvoir les récupérer rapidement, plutôt que d'avoir à effectuer à nouveau le calcul. Le choix du support mémoire impactera bien entendu le temps d'optimisation et les supports volatiles, à temps d'accès plus faible, seront à privilégier naturellement.
J'ai déjà parlé rapidement de mise en cache en Python dans GNU/Linux Magazine, mais c'était de manière fort sommaire sous la forme d'une « recette » dans le HS n°95 « Mémo Python Saison 2 » [1]. Dans cet article, j'utilisais comme exemple la somme du calcul des termes de la suite de Fibonacci :
U0 = 0
U1 = 1
Un = Un-2 + Un-1 pour n > 1
Je repartirai donc de cette fonction dans sa version récursive pour qu'elle soit volontairement plus lente, nous la ralentirons encore en effectuant la somme...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première