Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Outra forma de escrever o buffer no Console

Oi, tudo bem? Feliz natal a todos!

Acho que encontrei uma outra solução viável para o problema da reescrita de coisas antigas do buffer no Console. Ao invés de passar a quantidade de bytes lidos para o método estático EscreverBuffer, bastaria fazer a declaração do array buffer dentro do while. Desta forma, a cada execução do laço, o buffer está vazio. Segue o código com essa possibilidade.

var enderecoDoArquivo = "contas.txt";


            using (var fluxoDoArquivo = new FileStream(enderecoDoArquivo, FileMode.Open))
            {

                var numeroDeBytesLidos = -1;

                while (numeroDeBytesLidos != 0)
                {
                    var buffer = new byte[1024];
                    numeroDeBytesLidos = fluxoDoArquivo.Read(buffer, 0, 1024);
                    Console.WriteLine($"Quantidade de bytes lidos: {numeroDeBytesLidos}");
                    EscreverBuffer(buffer, numeroDeBytesLidos);

                }
            }

A execução final será a mesma do exemplo, porém, sem precisar passar pra frente o número de bytes lidos.

Desta forma, haveria alguma queda no desempenho da aplicação ou algo do gênero?

Abraços!!

2 respostas
solução!

Olá Leonardo, tudo certo? Feliz natal para você também!

Acredito que em uma aplicação normal não teria maiores problemas de desempenho, mas pensando sobre a criação de um objeto novo na memória a cada iteração pode ser algo custoso, afinal, são vários objetos para serem coletados e o Garbage Collector pode diminuir um pouco o desempenho se for chamado exaustivamente.

Acredito que a maior diferença seria para uma aplicação onde haveria processamento quase constante de imagens, tanto uploads e downloads, como o Instagram.

Espero ter ajudado!

Entendi. Muito obrigado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software