기존 BinaryReader를 통한 read보다 .Net Framework 4.0에서 새로 지원하는 MemoryMappedFile로 Read시 CPU Performance와 속도가 빠릅니다.

ex) MemoryMappedFile을 이용하여 Read

Reference가 없는 Struct는 자체 Generic Function으로 지원

Reference가 있는 것은 하단과 같이 변환

using( var  mmf = MemoryMappedFile. CreateFromFile(fileName,  FileMode.Open, "MemoryFileID"   ))                                    
{
   using  ( var  accessor =  mmf.CreateViewAccessor())
   {
        long  pos  =  0 ;
        index = accessor.ReadInt32(pos);
        pos  +=  sizeof(Int32);
        dataCount = accessor.ReadInt32(pos);
        pos  +=  sizeof(Int32);

        BookParam = BookStruct.FromMemoryFile(accessor, pos);
        pos += Marshal.SizeOf(typeof   (  BookParam10 ));
        PageParams  =  new PageParam[channelGroupCount];
        int  pageRawSize  =  0;
        int  pageRawTotalSize  =  0 ;
        for  ( int  chn  =  0  ; chn  <  channelGroupCount; chn ++  )
        {
            accessor.Read <PageParam> (pos, out PageParams[chn]);
            pos  +=  Marshal.SizeOf(typeof(PageParam));
            pageRawSize = PageParams[chn].PageCount *  BookParam  .   PageDataLength;
            pageRawTotalSize += pageRawSize;
        }  
        accessor.ReadArray<short>(pos, pPageRawBuffer, 0, pageRawTotalSize);
   }
}