Al leer InputStreams, ¿cómo se decide qué tamaño usar para el byte []?¿Cómo se decide qué tamaño de byte [] usar para InputStream.read()?
int nRead;
byte[] data = new byte[16384]; // <-- this number is the one I'm wondering about
while ((nRead = is.read(data, 0, data.length)) != -1) {
...do something..
}
¿Cuándo utiliza uno pequeño frente a uno grande? ¿Cuáles son las diferencias? ¿El número quiere estar en incrementos de 1024? ¿Hace una diferencia si se trata de un InputStream de la red frente al disco?
Muchas gracias, parece que no puedo encontrar una respuesta clara en otro lugar.
Me pregunto la misma pregunta para C#. Supongo que es la misma respuesta. Probablemente, la huella de memoria se puede tener en cuenta (cuanto más pequeño es el espacio, menor es la huella de memoria). Otro factor es el tipo de flujo de entrada ... Un flujo de red tomará más tiempo para llenar el búfer en comparación con una secuencia de memoria ... Obtendrá menos control con un búfer grande. –
datos más grandes deberían acelerar la lectura de la fuente rápida (menos iteraciones) y, por otra parte, una pérdida de espacio en el caso de fuentes lentas (la velocidad está dominada por la espera, por lo que no importa qué tan rápido sea su ciclo) – akappa