2011-02-06 27 views
7

LINQ to XMLにはパフォーマンス上の問題があると聞きましたが、友人の中には私のアプリで使用しないことを勧めている人もいました。私はMSDNに関連するものは何も見つかりませんでした。私は「インターネットブログ」に依存したくありません。誰もがこの問題や信頼できる情報源に関する公式な見解を知っていますか?linq to xml performance

+0

比較:http://msdn.microsoft.com/en-us/library/bb675156.aspx –

+0

関連:http://stackoverflow.com/questions/14000846/xdocument-performance – nawfal

答えて

12

は、ファイル全体をメモリに読み込みます。

膨大なXMLファイル(数百MB)を読んでいる場合、これは問題です。
代わりに、未処理のXmlReaderを使用できます。これはXMLファイルの前方参照のみを提供し、ファイル全体を一度に読み取ることはありません。

通常のサイズのXMLファイルを扱う場合、LINQ to XMLは問題ありません。

LINQ to XMLは、XmlReaderよりも数桁も使いやすくなっています。
200MBのXMLファイルを処理していることがわかっている場合、またはパフォーマンスを測定して、XDocumentコンストラクタが遅すぎることが判明した場合は、XmlReaderのみを使用してください。 XMLへのXPathとLINQの

+7

マイクロソフトLinqをXmlに使用してXMLファイルの入出力をストリームする方法の例を提供しています。そのため、ファイル全体を小さなチャンクだけメモリにロードすることはありません。http://msdn.microsoft.com/en- us/library/system.xml.linq.xstreamingelement.aspx#Y1392 – Michael

4

ちょうどgoogle linq vs xmlreaderあなたはそれを持っています。

先頭の結果、http://www.nearinfinity.com/blogs/joe_ferner/performance_linq_to_sql_vs.htmlは、linq2Xmlがxmlreaderの上に構築されているので、xmlreaderと比較して速度が遅いという結論につながります。しかし、IMHOでは、柔軟性と容易性読み取り/コードする。 XMLにLINQを使用して