Question

I am trying to read a few text files ( around 300 kb each ). Until now I've been using the Filestream to open the file and read it. ( TAB DELIMITED ). However, I heard about the memory mapped file in .net 4.0. Would it make my reads any faster ?

Is there any sample code that does the read of a simple file and compare performance ?

Was it helpful?

Solution

If the files are on disk and just need to be read into memory, then using a memory mapped file will not help at all, as you still need to read them from disk.

If all you are doing is reading the files, there is no point in memory mapping them.

Memory mapped files are for use when you are doing intensive work with the file (reading, writing, changing) and want to avoid the disk IO.

OTHER TIPS

If you're just reading once then memory-mapped files don't make sense; it still takes the same amount of time to load the data from disk. Memory-mapped files excel when many random reads and/or writes must be performed on a file since there's no need to interrupt the read or write operations with seek operations.

With your amount of data MMFs don't give any advantage. However, in general, if one bothers to carry the tests, he will find, that copying large (huge) files using MMFs is faster than calling ReadFile/WriteFile sequentially. This is caused by different mechanisms used internally in Windows for MMF management and for file IO.

Processing data in memory always faster than doing something similar via disk IO. If your processing is sequential and easily fit into memory, you can use File.ReadLines() to get data line by line and process them fast without hard memory overhead. Here example: How to open a large text file in C#

Check this answer too: When to use memory-mapped files?

Memory Mapped File is not recommended to read text files. To read text file you are doing right with Filestream. MMP is best to read binary data.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top