簡介:
有效率地將大緩衝區寫入二進位檔案是對於效能敏感的應用程式來說通常至關重要。在本文中,我們將探討如何在 C 中最佳化此流程的問題。
初始方法和瓶頸:
與檔案相比,提供的程式碼似乎表現不佳複製操作。潛在的瓶頸包括:
最佳化解決方案:
更快的方法是使用FILE* 和fwrite:
#include <stdio.h> const unsigned long long size = 8ULL*1024ULL*1024ULL; unsigned long long a[size]; int main() { FILE* pFile; pFile = fopen("file.binary", "wb"); for (unsigned long long j = 0; j < 1024; ++j) { // Data generation fwrite(a, 1, size*sizeof(unsigned long long), pFile); } fclose(pFile); return 0; }
此程式碼實現了約220MB/s 的寫入速度,接近SSD 的極限。
進一步最佳化:
為了進一步提高程式碼效率,我們可以實現以下:
基準測試和結果:
對不同緩衝區大小(1MB-4 GB)的不同平台(筆記型電腦和桌上型電腦)上的程式碼進行基準測試:
結論:
總而言之,要有效地將大緩衝區寫入C 中的二進位文件,考慮:
以上是如何最大限度地提高 C 語言的二進位檔案寫入速度?的詳細內容。更多資訊請關注PHP中文網其他相關文章!