0


0

そこで私は非常に大規模なWebアプリケーションから特定のホットスポットを取りました。それは多くのXML処理(ノードの追加、何らかのロジックに基づくノードへの属性の追加)を行い、そして* Linq to XMLを使って同じ状況を模擬するスタンドアロンテストを作成(XmlDocumentとは対照的に)*

Linq To XmlをXmlDocumentを使用して比較した場合、スタンドアロンテストのパフォーマンスは2〜10倍向上しました。

これで、Webアプリケーションにも同じ変更が適用されましたが、パフォーマンスとメモリの両方で改善は見られませんでした - まったく、* XmlDocument *を使用するのとほぼ同じであることが判明しました。 他のすべての要因/コードは前後で同じだったので、他に変更がないことを確認しました。

並行性(Web要求)とは別に、なぜこれが起こるのかわかりません。

任意の提案は大歓迎です。 他の誰かが似たような行動に出くわしたことがありますか?

[テストはWindows XPおよびWindows Server 2003を実行している状態で実行されました .Net framework 3.5]

更新:また、ここにはディスクI / Oが含まれていないことを述べておきます。 XMLはメモリ内でその場で構築され、ファイルなどに書き戻されることはありません。 それはそれを期待する別の外部システムに渡すことができるようにするためだけに使われていました。 外部システムは前後に変更はありません。

2 Answer


1


あなたはリンゴとリンゴを比較する必要があります。

  • Web XmlDocをStandAlone LinqXmlと比較しないでください。

  • StandAlone XmlDocとStandAlone LinqXmlを比較してください。


0


私の推測では、ディスクアクセスがWebサーバーアプローチの主なボトルネックになっているため、XMLの解析方法の向上はディスクアクセスによって覆い隠されています。 しかし、これは推測です。