2012-07-02 9 views
6

Algunas páginas web que proceso en Jsoup son pesadas. Con "pesado" quiero decir que la página contiene mucho HTML (supongamos que la página ya se ha descargado) o requiere varias iteraciones en el mismo documento (creado solo una vez a través de Jsoup.parse()).¿Una forma de estimar o predecir el tiempo de procesamiento Jsoup de un fragmento de HTML?

Por esa razón, me gustaría presentarle al usuario una barra de progreso con una estimación del tiempo restante.

Un enfoque es simplemente medir el volumen de HTML (en KB o MB) y obtener un factor de velocidad (lamentablemente, depende totalmente de la velocidad del sistema en el que se ejecuta este código).

Otro enfoque es contar el number of nodes?

Debido a la evidente naturaleza determinista de esto, ¿estoy buscando problemas?

¿Ideas de formas mejores de manejar esto?

+0

¿Puedes dar más ejemplos del tipo de procesamiento? En mi experiencia, el Jsoup.parse generalmente es el cuello de botella de rendimiento en html grandes. –

Respuesta

1

Resumiendo las respuestas hasta el momento: No, es no posible estimar o predecir el tiempo de procesamiento Jsoup de un fragmento de HTML.

La razón es que, aparte del hecho de que Jsoup.parse() es el componente que consume tiempo, Jsoup puede ejecutarse en muchas plataformas/dispositivos, algunos son extremadamente lentos, algunos son muy rápidos y no hay forma de esperar. Jsoup correlaciona sus etapas/operaciones de procesamiento con la arquitectura en la que se ejecuta.

0

Lo que te lo diría a tratar es:

long start = System.currentTimeInMilis(); 
//Processing 
long end = System.currentTimeInMilis(); 

long timeToProcess = end - start; 

pero realmente creo que esto es inútil, ya que depende del servidor de la página, velocidad, potencia de procesamiento. Hay demasiado para predecir. Además ... La API del selector Jsoup es EXTREMADAMENTE rápido. Además ... El tiempo que tardará en conectarse es la espera más larga. Que realmente no puedes predecir Espero que haya ayudado

Cuestiones relacionadas