@Cris sorry .This is quote MSDN Microsoft
Metodologia
Neste experimento, duas classes serão comparadas. A StreamReader
ea FileStream
classe será direcionado para ler dois arquivos de 10K e 200K em sua totalidade a partir do diretório do aplicativo.
StreamReader (VB.NET)
sr = New StreamReader(strFileName)
Do
line = sr.ReadLine()
Loop Until line Is Nothing
sr.Close()
FileStream (VB.NET)
Dim fs As FileStream
Dim temp As UTF8Encoding = New UTF8Encoding(True)
Dim b(1024) As Byte
fs = File.OpenRead(strFileName)
Do While fs.Read(b, 0, b.Length) > 0
temp.GetString(b, 0, b.Length)
Loop
fs.Close()
Resultado
FileStream
é obviamente mais rápido neste teste. Demora mais 50% a mais para StreamReader
ler o arquivo pequeno. Para o arquivo grande, demorou mais 27% do tempo.
StreamReader
está procurando especificamente quebras de linha, enquanto FileStream
isso não acontece. Isso será responsável por parte do tempo extra.
Recomendações
Dependendo do que o aplicativo precisa fazer com uma seção de dados, pode haver uma análise adicional que exigirá tempo de processamento adicional. Considere um cenário em que um arquivo tenha colunas de dados e as linhas sejam CR/LF
delimitadas. Ele StreamReader
funcionaria na linha de texto procurando oe CR/LF
, em seguida, o aplicativo faria uma análise adicional procurando um local específico de dados. (Você achou que String. SubString vem sem preço?)
Por outro lado, ele FileStream
lê os dados em partes e um desenvolvedor proativo pode escrever um pouco mais de lógica para usar o fluxo em seu benefício. Se os dados necessários estiverem em posições específicas no arquivo, esse certamente é o caminho a seguir, pois mantém o uso de memória baixo.
FileStream
é o melhor mecanismo de velocidade, mas exigirá mais lógica.