Olá,
Estou começando a estudar a API NIO, sem nenhuma necessidade especifica, apenas para ganhar conhecimento…e para conferir sua melhor performance em relação a java.io.
Porém no primeiro exemplo básico que fiz, fiquei decepcionado achei que a performance seria muito melhor que a mesma implementação com java.io.
O primeiro teste que fiz foi uma simples leitura (que quase todo sistema faz) de um arquivo texto de 500MB e a diferença de performance de uma implementação (NIO) e outra (java.io), não foi tão grande.
Pq?
- Minha implementação esta com problemas?
O ganho de performance seria apenas para processos mais complexos, como leitura/escrita, acesso randomico, sockets thread-safe, etc ?
Segue abaixo as duas implementações que fiz.
Grato
int total = 0;
BufferedReader in = new BufferedReader(new FileReader(nomeArquivo), 32768);
String linha = null;
while((linha = in.readLine()) != null) {
if(linha.indexOf( str ) >= 0) {
total++;
}
}
in.close();
java.nio
int total = 0;
Charset charset = Charset.forName("ISO-8859-1");
CharsetDecoder decoder = charset.newDecoder();
FileInputStream fin = new FileInputStream(nomeArquivo);
FileChannel channel = fin.getChannel();
ByteBuffer buf = ByteBuffer.allocate(32768);
while(channel.read(buf) != -1) {
buf.flip();
CharBuffer cb = decoder.decode(buf);
//System.out.println(cb.toString());
total++;
buf.clear();
}
channel.close();
fin.close();
