首頁 >後端開發 >C++ >如何用C實現最佳的文件寫入效能?

如何用C實現最佳的文件寫入效能?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-11 14:22:23575瀏覽

How to Achieve Optimal File Writing Performance in C  ?

如何增強 C 語言的檔案寫入效能

將大量資料寫入二進位檔案時,最佳化效能至關重要。以下是如何提高您的寫入速度:

利用FILE* 進行直接文件處理:

在範例程式碼中,使用FILE* 允許直接文件訪問,繞過中間層並減少開銷。正如原始問題中所觀察到的,這種方法帶來了顯著的效能提升。

FILE* 用法的程式碼最佳化:

#include <stdio.h> ;<br>const unsigned long long size = 8ULL<em>1024 </em>1024ULL;<br>unsigned long long a[size];<p>int main()<br>{</p>
<pre class="brush:php;toolbar:false">FILE* pFile;
pFile = fopen("file.binary", "wb");
for (unsigned long long j = 0; j < 1024; ++j){
    // Some calculations to fill a[]
    fwrite(a, 1, size*sizeof(unsigned long long), pFile);
}
fclose(pFile);
return 0;

}
< /pre>

此最佳化程式碼利用FILE* 直接寫入二進位文件,實現更快的寫入速度。

方法比較:

最近的測量表明 std::fstream 提供了與 FILE 相當的性能* 用於大文件寫入。以下是不同方法的比較:

#include <fstream></p><h1>include <chrono></h1><h1>include <vector></h1><h1>包含<cstdint></h1><h1>包含<數字></h1><h1>包含<隨機></h1><h1>包含<演算法></h1><h1>包含<iostream></h1><h1>包含<cassert></h1><p>長長長option_1(std::size_t位元組)<br>{</p><pre class="brush:php;toolbar:false">// Using std::fstream
std::vector<uint64_t> data = GenerateData(bytes);
auto startTime = std::chrono::high_resolution_clock::now();
auto myfile = std::fstream("file.binary", std::ios::out | std::ios::binary);
myfile.write((char*)&amp;data[0], bytes);
myfile.close();
auto endTime = std::chrono::high_resolution_clock::now();
return std::chrono::duration_cast<std::chrono::milliseconds>(endTime - startTime).count();

}

long long option_2(std::size_t bytes)
{

// Using FILE*
std::vector<uint64_t> data = GenerateData(bytes);
auto startTime = std::chrono::high_resolution_clock::now();
FILE* file = fopen("file.binary", "wb");
fwrite(&amp;data[0], 1, bytes, file);
fclose(file);
auto endTime = std::chrono::high_resolution_clock::now();
return std::chrono::duration_cast<std::chrono::milliseconds>(endTime - startTime).count();


}

測量結果顯示option_1 (std::fstream) 和option_2 (FILE*) 都實現了相當的性能對於大檔案

結論:對於將大緩衝區寫入C 中的二進位文件,FILE* 和std::fstream 都提供高效能。兩者之間的選擇取決於具體要求和偏好。

以上是如何用C實現最佳的文件寫入效能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn