多数の兄弟ノードを含む式のパフォーマンスを向上させるにはどうすればよいですか。
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:
前述の式の例では、子にはノード自体が含まれ、兄弟には含まれないことに注意してください。必要に応じて、ノード自体を除外するロジックを追加できます。