c# arquivo de Memória Mapeada de Leitura
-
26-09-2019 - |
Pergunta
Eu estou tentando ler alguns arquivos de texto ( em torno de 300 kb cada ).Até agora estou usando o Filestream para abrir o arquivo e ler.( DELIMITADO POR TABULAÇÕES ).No entanto, eu ouvi sobre o arquivo de memória mapeada em .net 4.0.Seria a minha lê mais rápido ?
Existe algum código de exemplo que faz a leitura de um simples arquivo e comparar o desempenho ?
Solução
Se os arquivos estiverem no disco e precisarem ser lidos na memória, o uso de um arquivo mapeado de memória não ajudará, pois você ainda precisa lê -los no disco.
Se tudo o que você está fazendo é ler os arquivos, não há sentido no mapeamento da memória.
Arquivos mapeados de memória são para uso quando você está fazendo um trabalho intensivo com o arquivo (lendo, escrevendo, mudando) e deseja evitar o disco IO.
Outras dicas
Se vocês são apenas ler arquivos com mapeias de memória não faz sentido; Ainda leva a mesma quantidade de tempo para carregar os dados do disco. Os arquivos mapeados de memória se destacam quando muitas leituras e/ou gravações aleatórias devem ser executadas em um arquivo, pois não há necessidade de interromper as operações de leitura ou gravação com operações de busca.
Com o seu quantidade de dados de participação de Fmm não dar qualquer tipo de vantagem.No entanto, em geral, se preocupa em realizar os testes, ele vai encontrar, que a cópia grande (enorme) de arquivos usando o Fmm é mais rápido do que chamar ReadFile/WriteFile sequencialmente.Isso é causado por diferentes mecanismos utilizados internamente no Windows MMF para a gestão e para a e / s de arquivo.
Processando dados na memória sempre mais rápido do que fazer algo semelhante via disco IO. Se o seu processamento for sequencial e facilmente se encaixa na memória, você pode usar File.readLines () Para obter a linha de dados por linha e processá -los rapidamente sem sobrecarga de memória dura. Aqui exemplo: Como abrir um grande arquivo de texto em C#
Verifique esta resposta também: Quando usar arquivos mapeados de memória?
O arquivo mapeado de memória não é recomendado para ler arquivos de texto. Para ler o arquivo de texto, você está fazendo corretamente com o FileStream. MMP é melhor ler dados binários.