Comment puis-je améliorer les performances de mes expressions lorsqu'elles contiennent un grand nombre de noeuds semblables ?
Les expressions avec une logique autour des semblables comme Node.Siblings.Any(SiblingNode.Properties.Boolean Prop)
peuvent causer des problèmes de performances dans les hiérarchies qui comptent de nombreux semblables. En effet, chaque noeud dispose d'un ensemble unique de semblables. Par exemple, pour un noeud supérieur avec les enfants A, B, C, D et E, le noeud A dispose des semblables B, C, D, E, le noeud B des semblables A, C, D, E, etc.
Nous vous recommandons plutôt de construire l'expression en créant une propriété que vous référencerez sur le parent à l'aide de l'enfant, puis en référençant la propriété sur le noeud. Par exemple, vous pouvez créer une propriété appelée ChildrenBooleanSet avec l'expression Node.Children.Any(ChildNode.Properties.Boolean Prop)
, puis référencer cette propriété sur le noeud Node.Parent.Properties.ChildrenBooleanSet
.
Ce type d'expression permet d'obtenir de meilleures performances car la valeur parent peut être mise en mémoire cache.
Caution:
Dans l'exemple d'expression ci-dessus, les enfants incluent le noeud, ce qui n'est pas le cas des semblables. Vous pouvez ajouter une logique supplémentaire pour filtrer le noeud si besoin.