Wie kann ich die Performance meiner Ausdrücke verbessern, wenn sie viele gleichgeordnete Knoten aufweisen?
Ausdrücke wie Logik zu gleichgeordneten Elementen wie Node.Siblings.Any(SiblingNode.Properties.Boolean Prop)
können in Hierarchien mit sehr vielen gleichgeordneten Elementen zu Performanceproblemen führen. Das liegt daran, dass jeder Knoten ein eindeutiges Set von gleichgeordneten Elementen hat. Beispiel: Bei einem obersten Knoten mit den untergeordneten Elementen A, B, C, D und E hat Knoten A die gleichgeordneten Elemente B, C, D, E, Knoten B die gleichgeordneten Elemente A, C, D, E usw.
Zum Erstellen des Ausdrucks sollten Sie besser eine Eigenschaft erstellen, die Sie im übergeordneten Element mit den untergeordneten Elementen referenzieren, und anschließend diese Eigenschaft auf dem Knoten referenzieren. Beispiel: Sie können die Eigenschaft ChildrenBooleanSet mit dem Ausdruck Node.Children.Any(ChildNode.Properties.Boolean Prop)
erstellen und diese Eigenschaft dann auf dem Knoten referenzieren: Node.Parent.Properties.ChildrenBooleanSet
.
Dieser Ausdruckstyp liefert eine bessere Performance, da der übergeordnete Wert gecacht werden kann.
Caution:
Denken Sie daran, dass beim Beispielausdruck oben die untergeordneten Elemente den Knoten selbst beinhalten, die gleichgeordneten Elemente jedoch nicht. Sie können zusätzliche Logik hinzufügen, um den Knoten selbst bei Bedarf herauszufiltern.