patacrep/patacrep — pull request #51 by paternal (2014-07-02 15:39:36+00:00)
Title: Mise en place d'un cache

Lors de l'analyse d'une chanson `toto.sg` (avec plasTeX), si aucun fichier de cache `toto.sg.cache` n'est présent (ou si `toto.sg` a changé, ou si `toto.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 dans `toto.sg.cache`. Au contraire, si ce fichier `toto.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) :

```console
louis@oryx:~/projets/patacrep/tmp$
real 0m41.100s
user 0m40.892s
sys 0m0.136s
```

- Première exécution avec le cache (donc toutes les chansons doivent être cachées). C'est plus long, mais pas énormément.

```console
$ time ../core/songbook ../data/books/songbook.sb --steps=tex
[patacrep.build] INFO: Building 'songbook.tex'…
real 0m47.636s
user 0m41.100s
sys 0m0.432s
```

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

```console
louis@oryx:~/projets/patacrep/tmp$ time ../core/songbook ../data/books/songbook.sb --steps=tex
[patacrep.build] INFO: Building 'songbook.tex'…
real 0m0.836s
user 0m0.692s
sys 0m0.140s
```

La branche n'est pas prête à être mergée : il reste quelques warnings disgracieux.