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

Filtre complexe Vs Filtres simples en cascade

pierrelouisbescond
Astéroïde
Créé

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 @WilliamRTips 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 !

Étiquettes