NẾU bạn chắc chắn rằng hiệu suất truy cập đến từ I/O và bạn không thể thay đổi cả hai ứng dụng thực sự là một chút bạn có thể làm.
Giải pháp đầu tiên không thay đổi mã ứng dụng hiện tại: sử dụng RAM disk. Nếu họ đang sử dụng tệp đó làm bộ nhớ dùng chung, bạn có thể thực hiện việc này mà không cần bất kỳ thay đổi nào khác. Nếu dữ liệu liên tục, bạn có thể cần thực hiện một bản sao nền cho một phương tiện khác sau mỗi lần viết. Hiệu suất sẽ không tốt bằng bộ nhớ chia sẻ thực sự nhưng ít nhất bạn sẽ không phải chờ các hoạt động I/O chậm.
Giải pháp thứ hai chỉ có thay đổi trong ứng dụng phải đọc dữ liệu: thường phân tích cú pháp tệp XML khá chậm (đặc biệt nếu bạn đang sử dụng XmlDocument
và tệp không quá ít). Trong trường hợp này, sử dụng XmlReader
, bạn phải làm cho mã đọc của bạn phức tạp hơn và quên đi các truy vấn XPath nhưng hiệu suất của nó sẽ tốt hơn nhiều lần so với XmlDocument
và nó sẽ không làm chậm kích thước tệp.
Cập nhật nhỏ (hoặc không quá nhỏ): nếu mã của ứng dụng thứ hai (tôi đoán tệp sẽ đọc tệp) có thể thay đổi, bạn có thể làm một chút để cải thiện hiệu suất của nó. Trước hết không đọc từng tập tin. Kiểm tra dấu thời gian của nó, đăng ký FileSystemWatcher
cho tệp đó hoặc bất kỳ tệp nào khác nhưng không đọc/phân tích tệp mỗi lần. Khi bạn thực hiện việc này, bạn có thể tiến lên một bước: chỉ đọc/phân tích cú pháp tệp khi nó thay đổi, chuẩn bị XmlDocument
trên nền (một chủ đề khác) và làm cho nó sẵn sàng cho các yêu cầu bỏ phiếu.Nếu các yêu cầu là cách nhau, chúng thậm chí có thể thấy thời gian phản hồi rất nhanh (nhưng hiệu suất hồ sơ của truy vấn XPath XmlDocument
đối với tệp thông thường của bạn).
EDIT: here bạn có thể tìm thấy đĩa RAM do Microsoft cung cấp. Nó khá đơn giản và ngây thơ nhưng thường là bạn/chúng tôi không cần nhiều hơn thế. Hơn nữa nó là một ví dụ về DDK, do đó bạn sẽ nhận được mã nguồn quá (trong trường hợp này ... chỉ để cho vui).
Nguồn
2012-06-10 19:50:42
Bạn có chắc chắn không thể triển khai nguồn dữ liệu khác như Sql Server Compact không? Tại sao bạn không thể thay đổi nó? – rcdmk
Bạn có cân nhắc sử dụng thứ gì đó khác với xml cho mục đích sử dụng đó không? có thể memcached (http://memcached.org/)? sql? nếu bạn phải sử dụng xml, hãy thử sử dụng XmlReader và XmlWriter – eyossi
Nếu bạn không thể thay đổi ứng dụng đầu tiên, các tùy chọn của bạn rất hạn chế. Thiết kế xấu dẫn đến hiệu suất kém. – Filip