Como posso aprimorar o desempenho de expressões que têm muitos nós irmãos?
Expressões com lógica que usa irmãos, como Node.Siblings.Any(SiblingNode.Properties.Boolean Prop)
, podem causar problemas de desempenho em hierarquias que têm muitos irmãos. Isso ocorre porque cada nó tem um conjunto exclusivo de irmãos. Por exemplo, em um nó superior com os filhos A, B, C, D, E, o nó A tem quatro irmãos (B, C, D, E), o nó B tem quatro irmãos (A, C, D, E) e assim por diante.
Uma maneira melhor de criar a expressão é criar uma propriedade a ser referenciada no pai usando os filhos, depois referenciar essa propriedade no nó. Por exemplo, você pode criar uma propriedade chamada ChildrenBooleanSet com a expressão Node.Children.Any(ChildNode.Properties.Boolean Prop)
e depois referenciar essa propriedade no nó: Node.Parent.Properties.ChildrenBooleanSet
.
Esse tipo de expressão apresenta um desempenho melhor porque o valor do pai pode ser armazenado em cache.
Caution:
Na expressão de exemplo acima, note que os filhos incluirão o próprio nó, mas os irmãos não. Você poderá incluir uma lógica adicional para filtrar o próprio nó, se necessário.