2010-12-08 79 views
15

現在,我意識到在這裏提出了這種類型的問題(特別是this - 我認爲這是對這兩個對象的很好的描述)。我的問題更多的是性能。我有幾個XML文檔,大小超過100 - 300 K。我注意到,將此信息加載到XDocument而非XmlDocument對象時存在一些延遲。這兩個對象之間是否存在嚴重的性能差異?他們是否以不同的方式訪問XML的內容?使用一串首選的XML時,或者存在差異時。這些對象的最終用途是針對有問題的對象運行查詢(XPath或LINQ,具體取決於)。性能:XDocument與XmlDocument

同樣,這主要是一個性能問題,涉及到內存和速度。

回答

20

XmlDocument是文檔對象模型的純管理實現。沒有任何COM組件互操作,例如MSXML庫。任何其他要求完全是虛假的。在.NET Framework中引入LINQ,整個XLinq API集作爲一種更友好的方式與XML進行交互。

如果您想盡可能提高性能並使用XPath,請嘗試使用XmlDocument並使用compiled XPath expressions

+2

而LINQ不會奇蹟般地提高性能。這也不是LINQ的目標 - 目標是提高程序員的生產力,如果您已經瞭解LINQ並且您不知道框架提供的「舊」XML API。 – 2013-06-03 10:08:08

4

XmlReader是.NET中最低的API,.NET中的所有其他XML API都在場景下使用。當然,這意味着它是最難以處理的,也是最快的。這是一個流媒體API,因此它最適合用於內存。

之間XmlDocumentXDocument又名的LINQ to XML,這裏有一些原始數據:https://www.altamiracorp.com/blog/employee-posts/performance-linq-to-sql-vshttp://blogs.msdn.com/b/codejunkie/archive/2008/10/08/xmldocument-vs-xelement-performance.aspx

這兩者找到XDocument類是更快/更有效。程序員的生產力/效率也不應該被忽視。就我個人而言,我發現使用XDocument更容易。