-
Notifications
You must be signed in to change notification settings - Fork 98
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
Expérimente le cache des paramètres #1311
base: master
Are you sure you want to change the base?
Conversation
Qu'est-ce qui manque pour que ça puisse être mergé? Pour moi les +/- sont:
|
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.
A priori OK
|
@fpagnoux L'app Codacy signale l'utilisation de Pickle comme une vulnérabilité, il semble que c'est bien connu. Les avantages de Pickle en termes de performance ne semblent pas si évidents, il est possible que les gains de performance que tu relèves ne viennent pas du changement de parser mais du fait de regrouper toutes les données et d'éviter des inefficacités dans le traitement des I/O. On pourrait envisager MessagePack comme alternative, les benchmarks le donnent nettement plus rapide. |
Passée de POC en WIP suite à l'accord en revue. |
La dernière proposition ( |
@sandcha Mon objection est devenue caduque: n'étant plus engagé sur la maintenance de France, c'est aux personnes qui vont l'assurer de se prononcer. Cela dit pour donner une simple opinion, je ne crois pas que ce que propose @maukoquiroga aie le même effet que le code de cette PR. Si j'ai bien compris, le cache LRU de |
Ces changements:
Cette PR n'est pas en l'état prête à être mergée, mais ouverte pour discussion.
Problème
La législation modélisée dans ce dépôt étant fonctionnellement étendue, elle contient un grand nombre de paramètres législatifs, déclarés dans des fichiers YAML. Le parsing de ces fichiers par le moteur OpenFisca est couteuse en terme de performances, un problème régulièrement exprimé par certains utilisateurs (cc @guillett).
Proposition
Cette PR propose de cacher l'arbre des paramètres parsé dans un pickle pour pouvoir le re-charger plus rapidement.
Impact
L'impact en termes de performances est assez significatif:
Temps de chargement de la législation d'OpenFisca-France:
(moyenne de 3 essais chargeant chacun 10 fois la législation, sur une machine plutôt performante)
Discussion
Les gains de performances semblent prometteurs, mais introduire un cache complexifie le chargement et comporte toujours un risque d'être confronté à des débuggages pénibles ("Mais pourquoi mes changements ne sont pas pris en compte?!"). Cf https://martinfowler.com/bliki/TwoHardThings.html.
Vu les ordres de grandeurs des gains en perfs, j'ai l'impression que ça vaut le coup. Qu'est-ce que vous en pensez ?