Possuo uma rotina (Schedulle) que roda diariamente que basicamente realiza a leitura no banco e través do resultado faz algumas validações e escreve em um arquivo txt.
Porém o arquivo gerado passa das 50k linhas e este processo demora muito para finalizar.
Gostaria de saber se existe alguma possibilidade de após realizar as validações registro a registro que possuo em um dataset, armazenar isso em memória e gerar uma unica vez um txt?
Se houver, com certeza irei ganhar muito em desempenho!
Se alguém possuir alguma ideia ou algum exemplo, poderiam me dar uma força?
Algumas coisas que eu faria pra identificar/resolver isso:
Colocar uma mensagem de log (com timestamp) antes de rodar a query, depois de fechar a conexao, antes de rodar as validaçoes, após a validaçao e após escrever a linha. Com isso você conseguirá entender melhor qual ponto exatamente toma mais tempo.
Para testar sua idéia, você pode adicionar o conteúdo para um StringBuilder ao invés de escrever diretamente no arquivo, no final do loop você escreve o conteúdo do builder diretamente para o arquivo. Essa soluçao nao escala muito bem, pois dependendo do tamanho do arquivo vai consumir toda memória disponível, mas pode te ajudar a confirma se a escrita do arquivo é realmente lenta assim.
Vou implementar essas possibilidades e avaliar qual a melhor solução.
Inclusive, o arquivo que está sendo escrito atualmente está na rede, isso provavelmente possa estar impactando também, vou escrever o arquivo localmente e posteriormente fazer uma cópia para a rede, pode ser que ajude também.