简介:
高效地将大缓冲区写入二进制文件是对于性能敏感的应用程序来说通常至关重要。在本文中,我们将探讨如何在 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-4GB)的不同平台(笔记本电脑和台式机)上的代码进行基准测试:
结论:
总而言之,要有效地将大缓冲区写入 C 中的二进制文件,考虑:
以上是如何最大限度地提高 C 语言的二进制文件写入速度?的详细内容。更多信息请关注PHP中文网其他相关文章!