gpt4 book ai didi

c++ - 提高ofstream的性能?

转载 作者:太空宇宙 更新时间:2023-11-04 13:34:55 27 4
gpt4 key购买 nike

我正在使用 FIFO 与一些并行进程通信。我正在用 read() 读取管道。我正在通过这样做写入命名管道:

ofstream pipe(namepipe);

pipe << data << endl;
pipe.close();

虽然我一直注意到性能很糟糕!有时需要 40 毫秒。在我看来,这是一个极端的延迟。我读到使用 std::endl 会影响性能。我应该避免使用 endl 吗?

使用 ofstream 会影响性能吗?除了这种方法还有其他替代方法吗?

谢谢!

最佳答案

当使用 fstream 处理大文件时,确保使用流缓冲区并且不要使用endl(endl 刷新输出流)。

当没有设置缓冲区时,至少 MSVC 实现一次复制 1 个字符filebuf(参见 streambuf::xsputn()),这会使您的应用程序受 CPU 限制,从而导致较低的 I/O 速率。

因此,在编写之前尝试将此添加到您的代码中:

const size_t bufsize = 256*1024;
char buf[bufsize];
mystream.rdbuf()->pubsetbuf(buf, bufsize);

注意:您可以找到完整的示例应用程序 here .

关于c++ - 提高ofstream的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29909802/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com