缓冲putc写

时间:2017-05-22 13:00:33

标签: c++ buffer

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

3 个答案:

答案 0 :(得分:1)

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

setvbuf

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我认为你的问题的答案很好:Writing a binary file in C++ very fast

答案是:

#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请求。