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