2012-07-03 37 views
7

Tôi đang sử dụng tất cả các phiên bản của Chuỗi Jsoup.parse():Có cách nào để tăng tốc độ Jsoup.parse() không?

parse(String html, String baseUri) 

cầm quyền ra tốc độ kết nối cho điểm chuẩn hiệu quả của nó.

Trên điện thoại Android cấp thấp điển hình, gọi số Jsoup.parse() trên chuỗi html của trang Wikipedia dài không quá hiếm (~ 600KB), mất 9 giây!

Khách hàng của tôi không sẵn sàng chấp nhận sự chậm trễ này và tôi đang nghĩ đến việc bán Jsoup cho một công cụ khác, tự phân tích trang web (vẫn còn trong Java) hoặc sử dụng một số trình phân tích C/C++ trong NDK (nếu có).

Nhưng tôi muốn tiếp tục sử dụng Jsoup càng nhiều càng tốt.

Có cách nào để tăng tốc Jsoup.parse() không?

+1

Nó có thể giúp bạn giải thích những gì bạn định làm với trang được phân tích cú pháp. – CommonsWare

+1

@CommonsWare Hiển thị các phần nhất định của trang HTML theo nhiều cách khác nhau, sử dụng cú pháp 'select()' của Jsoup. Tôi không thể sử dụng 'select()' của Jsoup trước khi phân tích cú pháp của Jsoup kết thúc. – Souper

+2

Yah điều này cũng đã xảy ra với tôi. Các Jsoup.parse chắc chắn là một hog hiệu suất, và tôi nghĩ rằng khi bạn cặp đôi rằng nó với bộ nhớ Java đập trên các thiết bị Android có bộ nhớ hạn chế, kết quả có thể khá xấu. Trong quá khứ tôi đã cải thiện hiệu suất của tôi bằng cách không sử dụng phân tích cú pháp khi tôi không phải - ví dụ bằng cách sử dụng biểu thức thông thường/thao tác chuỗi để trích xuất thông tin. –

Trả lời

5

Điều tôi cố gắng làm với các trang lớn (nếu có thể và bạn chỉ muốn một số thông tin trên trang) cố gắng thu nhỏ văn bản để phân tích cú pháp xác định trước các vùng bạn muốn và phân tích cú pháp các khu vực mong muốn JSoup.

Bằng cách đó bạn có thể kết hợp phân tích cú pháp của riêng bạn trong Java để giảm dữ liệu và sau đó sử dụng JSoup cho hàng hóa.

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