Tại sao chỉnh sửa XML / tìm kiếm XPath sử dụng số lượng bộ nhớ vô lý như vậy?


0

Tôi có một tệp XML lớn (khoảng 37 MB, đó là tệp XML cơ bản trong tài liệu Word khoảng 350 trang) mà tôi đang cố gắng tìm kiếm thông qua XPath. Tôi đang làm điều này 'thủ công' thay vì lập trình, bằng cách mở tệp trong trình soạn thảo XML và tìm kiếm ở đó.

Tôi đã thử với Xmplify, QXmlEdit, SublimeText với tiện ích mở rộng XPath, v.v. .

Ví dụ, tôi vừa thử mở tệp trong Xmplify. Điều đó mất khoảng ba phút và không có tài liệu nào khác mở sử dụng bộ nhớ của Xmplify tăng lên khoảng 1 GB.

Sau đó, tôi đã cố gắng thực hiện truy vấn XPath này (Tôi đang tìm tất cả các phần chèn được theo dõi bao gồm chuỗi en ):

//w:ins[w:r/w:t = 'en']

Điều đó đã cho tôi một SPOD trong một thời gian tốt. Sau khoảng 15 phút sử dụng khoảng 100% CPU, Xmplify hiện đang sử dụng 60 GB bộ nhớ và hệ điều hành của tôi đã nói với tôi rằng tôi đã hết bộ nhớ ứng dụng và cần phải bắt đầu thoát khỏi công cụ.

Điều đó có vẻ khá quá đối với tôi đối với một truy vấn XPath trong một tệp duy nhất, ngay cả khi đó là một tệp khá lớn. Các ứng dụng khác mà tôi đã thử sử dụng không quá tệ, nhưng việc mở tài liệu và chạy bất kỳ loại truy vấn XPath nào vẫn mất vài phút và việc sử dụng bộ nhớ của chúng cũng có thể đếm được bằng GB, do đó, Xmplify không hiệu quả.

Lý do cho điều này là gì? Tại sao XPath (rõ ràng) rất tốn tài nguyên? Có khác nhau giữa các hệ điều hành (của tôi là macOS Sierra) không?

 

Tôi đã tranh luận về việc nên đăng bài này ở đây hay trên StackOverflow, nhưng vì tôi đặc biệt không làm điều này theo chương trình, tôi quyết định đây có lẽ là nơi tốt hơn. Hãy di chuyển nếu có Stack tốt hơn cho nó.


1
FWIW, Saxon sẽ chạy biểu thức này dựa trên tệp 100Mb từ dòng lệnh sử dụng bộ nhớ 435Mb: 266ms để phân tích truy vấn, 1,97 giây để phân tích cú pháp XML và xây dựng cây, 55ms để đánh giá truy vấn. Nhưng các trình soạn thảo XML có khả năng xây dựng một cấu trúc trong bộ nhớ được thiết kế chủ yếu để chỉnh sửa thay vì truy vấn.
Michael Kay

@MichaelKay Những con số đó dường như là những con số hoàn toàn hợp lý với tôi. Nhưng chắc chắn một sự khác biệt lớn như vậy là một chỉ số của nhiều hơn là chỉ lựa chọn thiết kế? Tôi đã không nghe nói về Saxon trước đây; sẽ xem xét điều đó để xem có lẽ tôi có thể làm cho nó hoạt động cho mục đích của mình không.
Janus Bahs Jacquet
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.