在BinaryFile上使用MemoryMappedFile有什么好处?比较两种方法的阅读时间,所用时间几乎相同?
class Program
{
public static void WriteToBinaryFile<T>(string filePath, T objectToWrite, bool append = false)
{
using (Stream stream = File.Open(filePath, append ? FileMode.Append : FileMode.Create))
{
var binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(stream, objectToWrite);
}
}
public static void WriteObjectToMMF(string mmfFile, object objectData)
{
// Convert .NET object to byte array
byte[] buffer = ObjectToByteArray(objectData);
// Create a new memory mapped file
using (MemoryMappedFile mmf =
MemoryMappedFile.CreateFromFile(mmfFile, FileMode.Create, null, buffer.Length))
{
// Create a view accessor into the file to accommmodate binary data size
using (MemoryMappedViewAccessor mmfWriter = mmf.CreateViewAccessor(0, buffer.Length))
{
// Write the data
mmfWriter.WriteArray<byte>(0, buffer, 0, buffer.Length);
}
}
}
}
答案 0 :(得分:1)
如果顺序写到文件中,则没有太大区别。
如果您使用随机访问进行读取或写入,则会产生巨大差异。
对于内存映射文件,只有(小)数据块实际上是mapped
到内存。