Skip to content

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)

Merge request reports