Acelerando una peticion Http por UrlConnection

Hola!
Estoy desarrollando una aplicacion que necesita hacer peticiones Http mediante post en una clase.
Ahora... yo (me imagino, mas ahora me doy cuenta que es lo contrario; al menos en mi caso) que leer linea por linea la respuesta de un UrlConnection es mas lento que leer un buffer... Haciendo pruebas, me dicuenta de lo contrario.

Mis metodos son:

Leyendo del buffer:
 

salida:
 

Ahora... 56 milisegundos no es tiempo considerable.... pero dado que sera un aplicacion con una concurrencia de 50 usuarios.... = 2800 milisegundos de procesamiento... ya es algo no?

Pero... leyendo linea por linea de un InputStreamReader

 

Y la salida es :
 

El tiempo se reduce notablemente... 8 x 50 = 400 milisegundos

Saludos

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

cuántas corridas?

Corriste ambos métodos varias veces? una corrida no es suficiente, te recomiendo corras cada método 10 veces y veas si varia mucho el tiempo porque no siempre va a ser igual, hay muchas variables a tomar en cuenta. Corre cada uno 10 veces y saca el promedio y compáralos...

Otra idea es que hagas tu buffer un poco más grande, a menos que sepas que la respuesta es corta (veo que lees de 16 en 16KB). Y por último, puedes intentar leer directamente con el InputStream sin convertir a Reader, y puedes usar un LineNumberInputStream que también tiene método readLine, es otra opción y tal vez sea más rápido que usar el BufferedReader envolviendo el InputStreamReader envolviendo el InputStream...

Imagen de jali

Infinito

Que onda Enrique!
Lo mande en un ciclo infinito, y en todos el resultado era similar. En el primiero llegaba a subir a 200 - 260 el tiempo de execucion y en el segundo no pasaba de 50.
Intente igualmente con un buffer 10 veces mayor y el resultado no bajaba considerablemente(a 40 -50 aprox) voy a intentar lo del LineNumberInputStream y comento sobre el resultado.
Gracias

Imagen de 1a1iux

Mal entendido

No sé si entendí mal o que cosa, pero sólo por aclarar y para que no se preste a un mal entendido, comento:

Cuando usamos un BufferedReader para leer "línea por línea" estamos usando un buffer, el nombre de la clase es demasiado obvio, jeje.

En fin, sugiero que hagas pruebas con un buffer de 8K que es el tamaño por defecto del BuffererReader, a ver si se ve algún cambio notable con
tu primer método.

Sale y vale
Byte