缓冲 putc 写入
Buffering putc write
我是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 请求写入尽可能多的数据。
相关文章:
- 写入向量<向量<bool>>
- 如何将内容数组写入文本文件?
- 写入位置0x0000000C时发生访问冲突
- 使用ios:ate写入到流会覆盖现有文件
- 独立读取-修改-写入顺序
- 为什么在某些情况下不写入此文件?
- 用C++将哈希表写入文件并从文件中恢复
- std::当在256字节边界上写入整数时,流的奇怪行为
- 为什么指针不写入类的地址?
- 如何打开并写入一个名称取自C++中字符串的文件
- 如何在C++中从文件中读取/写入多个对象
- 链表中写入访问冲突的未知原因
- 着色器纹理值与创建纹理时写入的值不同
- MESI协议和std::atomic-它是否确保所有写入立即对其他线程可见?
- 在C++中一次将矢量值写入多个文件
- 当字段可以为null时,如何使用C++接口在Avro中写入数据
- 写入文件会产生一个空文件或根本没有文件
- std::带有自定义缓冲区的 iostream 不允许我写入
- 在 C++ 中使用指针将对象写入文件
- 缓冲 putc 写入