2012-07-03 17 views
7

estoy usando la versión de toda cadena de Jsoup.parse():¿Hay alguna manera de acelerar Jsoup.parse()?

parse(String html, String baseUri) 

Descartando la velocidad de conexión para la evaluación comparativa de su rendimiento.

En un teléfono Android típica de gama baja, llamando Jsoup.parse() en la cadena HTML de una página de Wikipedia tiempo no tan rara (~ 600 KB), toma 9 segundos!

Mi cliente no está dispuesto a aceptar este retraso y estoy pensando en deshacerse de Jsoup para un motor diferente, analizar páginas web yo mismo (todavía en Java) o usar algún analizador C/C++ en NDK (si está disponible).

Pero prefiero seguir usando Jsoup tanto como sea posible.

¿Hay alguna manera de acelerar Jsoup.parse()?

+1

Puede ser útil si explica lo que planea hacer con la página analizada. – CommonsWare

+1

@CommonsWare Muestra ciertas partes de la página HTML de diferentes maneras, usando la bien conocida sintaxis 'select()' de Jsoup. No puedo usar Jsoup 'select()' antes de que termine el análisis de Jsoup. – Souper

+2

Yah esto me ha pasado a mí también. El Jsoup.parse es definitivamente un hog del rendimiento, y creo que cuando lo combinen con la memoria de Java azotando en los dispositivos Android que tienen memoria limitada, los resultados podrían ser bastante malos. En el pasado, he mejorado mi rendimiento simplemente sin utilizar el análisis cuando no tengo que hacerlo, por ejemplo, usando expresiones regulares/manipulación de cadenas para extraer información. –

Respuesta

5

Lo que intento hacer con páginas grandes (si es posible y solo quiere información en la página) es intentar minimizar el texto para analizar identificando previamente las regiones que desea y luego analizar regiones deseadas con JSoup.

De esta forma puede combinar su propio análisis sintáctico en Java para reducir los datos y luego usar JSoup como producto.

Cuestiones relacionadas