表达式包含大量同级节点时如何提高表达式的性能?
使用围绕同级的逻辑的表达式(例如 Node.Siblings.Any(SiblingNode.Properties.Boolean Prop)
)可能导致存在许多同级的层次中出现性能问题。这是因为每个节点都有一组唯一的同级。例如,有一个具有子节点 A、B、C、D 和 E 的顶级节点,节点 A 具有同级 B、C、D、E,节点 B 具有同级 A、C、D、E 等。
要构造表达式,更好的方法是使用子代创建将在父代上引用的属性,然后在节点上引用该属性。例如,您可以使用表达式 Node.Children.Any(ChildNode.Properties.Boolean Prop)
创建一个名为 ChildrenBooleanSet 的属性,然后在节点上引用该属性:Node.Parent.Properties.ChildrenBooleanSet
。
这种类型的表达式可以提高性能,因为父代值可以缓存。
Caution:
请注意,使用上面的示例表达式时,子代将包括节点自身,但同级不包括。如果需要,您可以添加额外的逻辑以筛选掉节点本身。