2011-02-06 34 views
7

Tôi nghe nói rằng LINQ to XML có một số vấn đề hiệu suất và một số bạn bè của tôi đề nghị tôi không sử dụng nó trong ứng dụng của tôi. Tôi không thể tìm thấy bất cứ điều gì có liên quan trên MSDN và tôi không muốn dựa vào "một số blog internet". Có ai biết quan điểm chính thức về vấn đề này hay một số nguồn đáng tin cậy không?linq để xml hiệu suất

+0

So sánh XPath và LINQ với XML: http://msdn.microsoft.com/en-us/library/bb675156.aspx –

+0

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

Trả lời

12

Sử dụng LINQ to XML sẽ đọc toàn bộ tập tin vào bộ nhớ.

Nếu bạn đang đọc một tệp XML khổng lồ (hàng trăm megabyte), đây là một vấn đề.
Thay vào đó, bạn có thể sử dụng XmlReader thô, cung cấp chế độ xem chỉ chuyển tiếp của tệp XML và sẽ không đọc toàn bộ tệp cùng một lúc.

Nếu bạn đang xử lý các tệp XML có kích thước bình thường, LINQ to XML sẽ ổn.

LINQ to XML là một số đơn đặt hàng có cường độ dễ sử dụng hơn XmlReader.
Bạn chỉ nên sử dụng XmlReader nếu bạn biết rằng bạn sẽ xử lý các tệp XML 200MB hoặc nếu bạn đã đo hiệu suất của mình và đã chứng minh rằng hàm tạo XDocument đang quá chậm.

+7

Microsoft cung cấp các ví dụ về cách luồng đầu vào/đầu ra của tệp xml bằng cách sử dụng LINQ to Xml để bạn không kết thúc tải toàn bộ tệp vào bộ nhớ chỉ một phần nhỏ của nó: http://msdn.microsoft.com/en- us/library/system.xml.linq.xstreamingelement.aspx # Y1392 – Michael

4

Chỉ cần google linq vs xmlreader bạn sẽ có nó.

Kết quả hàng đầu, http://www.nearinfinity.com/blogs/joe_ferner/performance_linq_to_sql_vs.html, dẫn đến kết luận rằng nó chậm hơn so với xmlreader (tất nhiên, vì linq2Xml được xây dựng trên xmlreader), nhưng IMHO nó tốt hơn nhiều so với chấp nhận được, khi bạn đạt được sự linh hoạt và dễ dàng hơn để đọc/mã.

Các vấn đề liên quan