2012-07-03 13 views
7

używam wszystkich wersji Ciąg Jsoup.parse():Czy istnieje sposób na przyspieszenie Jsoup.parse()?

parse(String html, String baseUri) 

wykluczając prędkości łączność benchmarkingu jego wydajność.

Na typowym low-end telefon z Androidem, nazywając Jsoup.parse() na ciąg html a nie tak rzadkich długiej stronie Wikipedia (~ 600KB), bierze 9 sekund!

Mój klient nie chce zaakceptować tego opóźnienia i myślę o tym, że albo wyrzucę Jsoup na inny silnik, parsuję strony internetowe (wciąż w Javie), albo użyję jakiegoś parsera C/C++ w NDK (jeśli jest dostępny).

Ale wolę nadal używać Jsoup tak bardzo, jak to możliwe.

Czy istnieje sposób na przyspieszenie Jsoup.parse()?

+1

Może ci pomóc, jeśli wyjaśnisz, co planujesz zrobić z analizowaną stroną. – CommonsWare

+1

@CommonsWare Wyświetlaj określone części strony HTML na różne sposoby, używając dobrze znanej składni Jsoup 'select()'. Nie mogę użyć 'select()' Jsoup zanim przetwarzanie Jsoupa się skończy. – Souper

+2

Ja też tak się stało. Jsoup.parse to na pewno śledź wydajnościowy i myślę, że jeśli połączysz to z jaśniejszą pamięcią Java na urządzeniach z Androidem, które mają ograniczoną pamięć, wyniki mogą być dość złe. W przeszłości poprawiłem swoją wydajność, nie używając przetwarzania, gdy nie muszę - na przykład używając wyrażeń regularnych/manipulacji ciągami, aby wyodrębnić informacje. –

Odpowiedz

5

Co staram się zrobić sobie z dużymi stron (jeśli to możliwe i chcesz tylko pewne informacje na stronie), to starać się zminimalizować tekst do analizowania identyfikacji wcześniej regiony, które chcesz, a następnie analizować chcieli regiony o JSoup.

W ten sposób można łączyć własne przetwarzanie w Javie, aby ograniczyć dane, a następnie użyć JSoup dla towaru.

Powiązane problemy