Xerces 2.6 DOMParser を使用する Windows アプリケーションのパフォーマンスを最適化しようとしているときに、Xerces C++ DOMNode オブジェクトの子要素の数をカウントする最速の方法を見つけようとしています。
ほとんどの時間は、子のカウントとアクセスに費やされているようです。私たちのアプリケーションは、ドキュメント内のすべてのノードを繰り返し使用してデータを添付する必要があり、DOMNode::setUserData()
最初は を使用してDOMNode::getChildNodes()
子DOMNodeList::getLength()
をDOMNodeList::item(int index)
数えてアクセスしていましたが、これらは比較的高価な操作です。
呼び出しの別のイディオムを使用し
DOMNode:: getFirstChild()
て最初の子ノードを取得し、呼び出しDOMNode::getNextSibling()
て特定のインデックスで子にアクセスするか、最初の子要素の兄弟の数をカウントして子ノードの合計数を取得すると、パフォーマンスが大幅に向上しました。
ただし、getNextSibling()
解析ステップのボトルネックのままなので、Xerces を使用して子要素をトラバースしてアクセスするさらに高速な方法があるのではないかと考えています。