Tamanho de buffer

Amigos, em muitos codigos usamos buffer, para escerver ou ler dados. Porém não entendo ainda, como calcular o tamanho que devo usar em um buffer. Segue um codigo para exemplificar:

public static void main(String[] args) throws IOException {

		int TAMANHO_BUFFER = 2048;
		byte[] buffer = new byte[TAMANHO_BUFFER];

		InputStream inputZip = null;
		OutputStream outputZip = null;

		ZipFile arquivoZip = new ZipFile("c:\\sped2.zip");

		Enumeration<? extends ZipEntry> entradas = arquivoZip.entries();


		while(entradas.hasMoreElements()) {
			ZipEntry entrada = (ZipEntry) entradas.nextElement();
			
			inputZip = arquivoZip.getInputStream(entrada);
			outputZip = new FileOutputStream("c:\\ok.txt");

			int bytesLidos = 0;
			while((bytesLidos = inputZip.read(buffer)) > 0) {
				outputZip.write(buffer, 0, bytesLidos);
			}

			inputZip.close();
			outputZip.close();
			
		}
		arquivoZip.close();
	}

enquanto existem bytes a serem lidos do input ele escreve o output, isso com um buffer de tamanho 2048. Até ai tudo bem… porém em que devo me basear para setar esse tamanho de buffer ?

abrassssssss

Isso é por tentativa e erro. Eu achei que, para um BufferedInputStream, o melhor tamanho é 8 * 1024 (ou seja, 8KB), mas isso pode depender de sua aplicação.

thingol valeu cara!

como assim para um BufferedInputStream ?

isso nao depende do processamento e tamanho do “fluxo de dados” ? depende tambem da classe utilizada ?

mesmo que seja por tentativa e erro, como devo proceder até encontrar o melhor tamanho ?

abrassssssssss

vou reformular minha pergunta, quais parametros devo seguir para saber se devo aumentar ou diminuir o tamanho do buffer? tamanho do meu arquivo de leitura por exemplo?

abrassss