Memoization : quel est l'intérêt de la mise en cache ?

Spécialité(s)


Résumé

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...

Cet article est réservé aux abonnés. Il vous reste 97% à découvrir.
S'abonner à Connect
  • 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
Je m'abonne


Article rédigé par

Abonnez-vous maintenant

et profitez de tous les contenus en illimité

Je découvre les offres

Déjà abonné ? Connectez-vous