簡體   English   中英

讀寫大數據到C ++中的自定義二進制文件

[英]Reading-writing large data to a custom binary file in C++

我在C ++中有一些代碼將結構寫入文件。 結構的格式是:

     struct dataHeader
     {
      int headerID;
      int numberOfDataLines;
      };

     struct data
     {
       double id;
       double type;
       char[100] name;
       char[100] yyy;
      };

現在,這兩個結構總是成對寫入,文件中包含超過50000個結構。

我的問題是有沒有辦法更有效地做到這一點? 文件大小是我主要關注的問題。

編輯:當前代碼是循環中的簡單fwrite(Psuedo-code):

   while(dataBlock.Next())
   {
          fwrite(&_dataHeader, sizeof(dataHeader), 1, fpbinary); 

          while( dataLine.Next())
          {
            fwrite(&_data[i], sizeof(data), 1, fpbinary); 
          }  
   }

謝謝。

如果數據具有相似性,則可以通過對數據進行分組來減少數據存儲要求。 例如,您可以准備一個“名稱”或“yyy”值的列表,並將您的數據寫入組中,使得首先是名稱為“Bob”的數據值,然后是“Josh”。

如果您的所有數據都是唯一的,那么您唯一的選擇就是在寫入文件之前壓縮二進制數據,並在讀取之后將其解壓縮。 我建議你使用快速壓縮和解壓縮的QuickLZ

如果時間要求不是很高,您可以嘗試壓縮文件的內容。

如何使用zlib輕松壓縮和解壓縮文件?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM