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

Programmation avec le 6502 : les sprites de la NES, ou comment coder le jeu Pac-Man

Magazine
Marque
Hackable
Numéro
36
Mois de parution
janvier 2021
Domaines
Résumé

Dans le précédent article, nous avons commencé à nous familiariser avec la partie graphique de la console NES (Nintendo Entertainment System). Aujourd’hui, nous allons réaliser un véritable jeu, ou du moins nous allons suffisamment le débuter pour qu’il commence à être intéressant.

Analyse de code avec Cppcheck (et intégration sous Eclipse)

Magazine
Marque
GNU/Linux Magazine
HS n°
Numéro
112
Mois de parution
janvier 2021
Domaines
Résumé

Zut ! Encore un plantage !!! Combien de fois n’avez vous pas prononcé cette phrase, face au blocage d’une application de bureautique bien connue ou face à un crash système ? Sur un ordinateur de bureau, ce type de désagrément n’a d’autre effet que de faire monter votre niveau d’énervement, mais dans le cas d’un système embarqué, les effets sont bien plus graves. Heureusement, Cppcheck est là pour vous aider.

Réinvention de la roue... des temporisations

Magazine
Marque
GNU/Linux Magazine
HS n°
Numéro
112
Mois de parution
janvier 2021
Domaines
Résumé

Les temporisations sont essentielles au sein des systèmes d'exploitation et dans certaines applications, pour déclencher des actions à l'échéance d'un délai. Il existe différents algorithmes pour les gérer de manière efficace. Cet article présente la fusion de deux d'entre eux, pour en tirer le meilleur.