[英]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 。
如果時間要求不是很高,您可以嘗試壓縮文件的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.