Tôi đã kế thừa một dự án trong đó mô hình dữ liệu của ứng dụng là một tài liệu XML. Các nhà phát triển trước khi tôi đã tạo ra một mô hình đối tượng dựa trên lược đồ xml này, và sau đó được mã hóa dựa vào mô hình đối tượng.Nối tiếp XML chậm
Sau nhiều năm bảo trì, ứng dụng này đã dần dần bắt đầu hiển thị tuổi của nó. Trưởng nhóm đã nói rằng lý do chính đằng sau điều này là do sự chậm trễ của xml serialization. Tôi rất muốn gọi BS về vấn đề này, nhưng nhiều tệp xml mà chúng tôi xử lý có kích thước trên 2MB và lưu ý những điều cơ bản về những gì diễn ra đằng sau hậu trường với các đối tượng được đánh dấu là [Serializable]
, 2MB rất nhiều để phản ánh do đó có thể có một số sự thật với lý thuyết chậm chạp.
Theo kinh nghiệm của bạn, việc tuần tự hóa có thực sự 'chậm'/xấu để chọn tham gia mô hình XML -> XPath thay vì mô hình XML -> POCO không?
BTW đây là dự án .NET 2.0 và khách hàng của chúng tôi có thể sẽ nâng cấp lên .NET 3.5 vào cuối năm tới.
+1 câu trả lời tuyệt vời. Là một sang một bên, tôi nhớ lại thấy một số điểm chuẩn trên DataContractSerializer cho thấy nó trung bình là khoảng 10% nhanh hơn XmlSerializer. – womp
-1 Vì xê-ri XML * chắc chắn nhất * sử dụng Phản chiếu; không có cách nào nó có thể nhận được chi tiết loại * trừ khi * nó được sử dụng Reflection. Bây giờ, những chi tiết này không phải được sử dụng * liên tục * nhưng chúng phải được lấy ngay từ đầu. Ngoài ra, 'DataContractSerializer' là * không * một phần của WCF; WCF tận dụng nó rất nhiều, nhưng nó nằm bên ngoài WCF (trong không gian tên riêng của nó và nó là một assembly riêng). – casperOne
@casperOne XML Serializer sử dụng sự phản chiếu như bạn đã nói lần đầu tiên giả sử bạn đang gọi các nhà xây dựng chính xác, nó sẽ lưu trữ bộ nhớ kết quả. Tôi tin rằng bạn cũng có thể tạo ra điều này tại thời gian biên dịch – JoshBerke