2010-12-08 35 views
15

ここで、このタイプの質問があったことを認識しています(特にthis - これは2つのオブジェクトの非常に良い説明だと思います)。私の質問は、パフォーマンスに関してです。私は100〜300 KのサイズのXML文書をいくつか持っています。私は、XmlDocumentオブジェクトではなく、XDocumentにこの情報をロードするときに遅れがあることに気付きました。これらの2つのオブジェクトの間に重大なパフォーマンスの違いはありますか?彼らは違った方法でXMLのコンテンツにアクセスしますか? XMLの文字列を操作するときには、これが優先されます。あるいは違いがあります。これらのオブジェクトの最終使用は、問題のオブジェクトに対してクエリ(XPathまたはLINQ)を実行することです。パフォーマンス:XDocumentとXmlDocumentの比較

これもまた、メモリとスピードの両方に関するパフォーマンスの問題です。

答えて

20

XmlDocumentは、ドキュメントオブジェクトモデルの純粋に管理された実装です。 MSXMLライブラリなどのCOMコンポーネントとの相互運用はありません。それ以外の主張は完全に偽です。 XLinqのAPI全体は、.NET FrameworkでLINQを導入してXMLとやりとりする面白い方法でした。

パフォーマンスを最大化しようとしていてXPathを快適に使用するには、XmlDocumentを使用して、compiled XPath expressionsを使用してみてください。

+2

LINQは魔法のようにパフォーマンスを改善しません。また、LINQの目標はありません。プログラマーの生産性を向上させることが目標です。既にLINQを知っていて、フレームワークが提供する「古い」XML APIがわからない場合もあります。 –

4

XmlReaderは、.NETの他のすべてのXML APIがシーン内で使用する.NETで最も低いAPIです。当然、それは対処することが最も難しく、最速であることを意味します。これはストリーミングAPIなので、メモリにも最適です。 XMLへのLINQの別名XmlDocumentXDocument

、ここではいくつかの生の数値は以下のとおりです。https://www.altamiracorp.com/blog/employee-posts/performance-linq-to-sql-vsは、http://blogs.msdn.com/b/codejunkie/archive/2008/10/08/xmldocument-vs-xelement-performance.aspx

はどちらもXDocumentクラスは、より効率的/高速化されて見つけます。プログラマーの生産性/効率も無視してはならない。個人的に私はXDocumentで作業する方が簡単です。

関連する問題