optimize FindAvailabilityService
Created by: adipasquale
L'objectif principal est de réduire l'usage mémoire.
Ce service itère sur les semaines 6 * 4 prochaines semaines et à chaque itération appelle CreneauxBuilderService
jusqu'a trouver au moins un creneau
1. Optim plage ouvertures
dans CreneauxBuilderService
il y a une requete sur les plages d'ouvertures. qui est aujourd'hui répétée 6 * 4 fois. Je l'ai rendue publique, et je la calcule maintenant une seule fois depuis FindAvailabilityService
. J'ai du désoptimiser légèrement la requête pour le faire, car elle dépendait des dates pour limiter le nombre de POs. J'ai remplacé ça par un filtre sur les POs expirées, ce qui est potentiellement moins restrictif. J'espère que le gain de ne le faire qu'une fois versus 6 * 4 balancera bien ça. Pour la mémoire en tout cas on va gagner.
2. Optimisation yield
La on calcule touuuuus les creneaux alors qu'on ne s'occupe que du premier. j'aimerais faire en sorte de transformer une partie des services en enumerateurs pour pouvoir prendre le premier sans avoir a tout calculer. je vais faire ca dans une PR a part, parce que c'est relativement compliquée (et que je me rends compte que je ne sais pas utiliser yield en ruby haha c'est tres different de python en fait)