2015-01-23 7 views
0

BinaryFile보다 MemoryMappedFile을 사용하면 어떤 이점이 있습니까 ?? 두 방법 모두의 독서 시간을 비교했을 때, 취해진 시간은 거의 같았습니까? 당신이 순차적으로 파일에 쓰기 경우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); 
      } 
     } 
    } 


} 

답변

1

은 큰 차이가 없습니다.

랜덤 액세스로 읽거나 쓰려면 큰 차이가 있습니다.

메모리 매핑 된 파일의 경우 데이터의 작은 (작은) 청크는 실제로 메모리에 mapped입니다.