Community Spring Cleaning week is here! Join your fellow Maveryx in digging through your old posts and marking comments on them as solved. Learn more here!
Free Trial

Base de Connaissance

Apprenez auprès des experts.
TIPS de la semaine

Chaque semaine, découvrez de nouvelles astuces et bonnes pratiques pour devenir un expert !

Voir l'index
Récemment, j’ai cherché à optimiser un workflow qui traite 55 millions d’enregistrements en 1heure.   En utilisant l’outil de profiling (voir le tip de @WilliamR: Tips de la semaine (3.1):Améliorer la performance de son workflow), j’ai découvert qu’une des fonctions les plus gourmandes était une « batch macro » qui itérait 150 fois.   Cette « batch macro » qui s’exécute en approximativement 17 secondes contient un filtre « complexe » (c.à.d. avec 2 conditions liées par un « AND ») qui représente la majorité du temps de traitement.   Sur les conseils de @WilliamR, j’ai converti ce filtre « complexe » en une suite de 2 filtres simples et voici les résultats en terme de performance :   Sur 55 millions d’enregistrements, 1 itération de la batch macro :   Filtre 1 Filtre 2 Temps d’exécution (secondes) Variable texte = condition AND Variable numérique != 0             Non 17,1 Variable texte = condition Variable numérique != 0             16,1 Variable numérique != 0 Variable texte = condition 13,1   Soit un gain de 30% en mettant 2 filtres simples en cascades… et en prenant soin de mettre le type de donnée le plus simple (numérique) avant le filtre sur la variable « chaine » qui est, de façon logique, plus lent en exécution.   Comme souvent, les solutions « élégantes » (ici filtre complexe) ne sont pas toujours les plus performantes !
Afficher l'article complet
Étiquettes