缓冲 putc 写入

Buffering putc write

本文关键字:写入 putc 缓冲      更新时间:2023-10-16

我是C++新手,正在制作一个使用大量 putc 在输出(即文件(中写入数据的应用程序。由于高写入速度变慢,我曾经用 Delphi 编写代码,所以我知道如何解决它,比如制作一个内存流并在每次我们需要写入输出时写入它,如果内存流的大小大于我们想要的缓冲区大小,将其写入输出并清除内存流。我应该如何使用C++或任何更好的解决方案来做到这一点?

putc 已经缓冲,默认值为 4 KB 您可以使用 setvbuf 更改该值:D

塞特夫布夫

写入文件应该非常快。清空缓冲区通常需要一些时间。请考虑使用字符 n 而不是 std::endl

我认为你的问题的一个很好的答案在这里: 非常快速地编写二进制文件 C++

答案是:

#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){
        //Some calculations to fill a[]
        fwrite(a, 1, size*sizeof(unsigned long long), pFile);
    }
    fclose(pFile);
    return 0;
}

在您的情况下,最重要的是以尽可能少的 I/O 请求写入尽可能多的数据。