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

Magazine
Marque
GNU/Linux Magazine
Numéro
238
Mois de parution
juin 2020
Domaines


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.
à partir de 21,65€ HT/mois/lecteur pour un accès 5 lecteurs à toute la plateforme
J'en profite


Articles qui pourraient vous intéresser...

Conservez l’historique de vos commandes pour chaque projet, le retour

Magazine
Marque
GNU/Linux Magazine
Numéro
241
Mois de parution
octobre 2020
Domaines
Résumé

Pouvoir conserver un historique dédié pour chaque projet, voici l’idée géniale énoncée par Tristan Colombo dans un précédent article de GLMF [1]. Cet article reprend ce concept génial (je l’ai déjà dit?) et l’étoffe en simplifiant son installation et en ajoutant quelques fonctionnalités (comme l’autodétection de projets versionnés pour proposer à l’utilisateur d’activer un historique dédié, si ce n’est pas le cas).

Système extensible et hautement disponible avec Erlang/OTP

Magazine
Marque
GNU/Linux Magazine
Numéro
241
Mois de parution
octobre 2020
Domaines
Résumé

Erlang est un langage de programmation fonctionnel et distribué, créé à la fin des années 80 pour régler de nombreux problèmes issus du monde des télécoms, et plus généralement de l’industrie. Outre le fait qu’il soit l’une des seules implémentations réussies du modèle acteur disponible sur le marché, son autre grande particularité est d’être livré avec une suite d’outils, de modèles et de principes conçus pour offrir un environnement cohérent. Ce framework, nommé OTP, fait partie intégrante de la vie des développeurs utilisant Erlang au jour le jour...