New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Mise en place d'un cache #51
Conversation
Du coup, si cette branche est finalisée et acceptée, je pense que #23 peut être abandonné. |
J'aime beaucoup ! Pourquoi ne pas faire plutôt un cache par datadir, dans un dossier |
@@ -4,16 +4,50 @@ | |||
"""Song management.""" | |||
|
|||
from unidecode import unidecode | |||
import cPickle |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je crois qu'il est conseille de faire plutot
try:
import cPickle as pickle
except ImportError:
import pickle
On n'a pas l'information sur le datadir dans lequel on est au moment de la création du cache, mais on peut l'avoir en modifiant deux lignes de code. Le problème, c'est qu'avec le plugin cwd, cette notion de datadir n'existe plus vraiment (puisqu'on peut alors importer des chansons qui viennent d'un répertoire arbitraire). Du coup, pour ne pas alourdir le code, on peut :
Pas de préférence (peut-être une légère pour la première, qui me paraît la plus simple). Convainquez-moi ! |
C'est dommage d'interdire à Je propose une solution mixte : si le fichier contient Le point au début du nom de fichier peut être bien aussi. |
Pas la peine de deviner : on a la liste des datadirs. Il suffit donc de tester si c'est un sous-chemin de notre chanson. On peut aussi dire que les chansons hors d'un datadirs ne sont pas mises en cache. |
Ca me va comme solution. |
Conflicts: patacrep/content/song.py patacrep/songs.py
Pas encore prêt à merger : toujours quelques warnings lors de la génération de l'index. |
Si ça vous convient, c'est bon pour merger. |
Lors de l'analyse d'une chanson
toto.sg
(avec plasTeX), si aucun fichier de cachetoto.sg.cache
n'est présent (ou sitoto.sg
a changé, ou sitoto.sg.cache
a été généré par une ancienne version de songbook), l'analyse est faite, et une version simplifiée de l'objet Song est enregistrée danstoto.sg.cache
. Au contraire, si ce fichiertoto.sg.cache
est correcte, l'analyse plasTeX n'est pas faite, et c'est la version enregistrée dans le cache qui est utilisée.Quelques statistiques (avec l'ensemble des chansons de patacrep-data) :
Branche master (sans le cache) :
Première exécution avec le cache (donc toutes les chansons doivent être cachées). C'est plus long, mais pas énormément.
Seconde exécution avec le cache : aucune chanson n'est analysée à nouveau, le cache est utilisé à chaque fois. Comme on le voit, il y a un gain de temps assez important.
La branche n'est pas prête à être mergée : il reste quelques warnings disgracieux.
Ça pourra être particulièrement utile pour patanet.