简单测试发现iostreams::stream的效率比我想象中要低...看了一下源码,发现写入流的数据并不是直接写入到device中,而是在内部缓存起来,缓冲区满或者调用flush时才把数据复制到device里,造成不必要的内存拷贝。缓冲的机制对于比较慢的device(如标准io、文件流等)是常用的策略,不过对于我的应用来说(相当于把流输出到vector中)就是不必要的步骤了。仔细阅读手册和源码没发现相关的可配置参数,mailing list提问也没下文。也许新版本会支持,暂且用着,如果效率是瓶颈再自己实现直接写入目标的streambuf跟标准库的stream结合好了,并不难,只是会失去些通用性。
关于iostreams的效率
最新推荐文章于 2023-11-30 19:31:49 发布
本文探讨了iostreams::stream的性能问题,发现其效率较低的原因在于内部缓存机制导致额外的内存拷贝。对于高速设备,这种机制反而降低了效率。文章讨论了解决方案并提出可能的改进方向。
4863

被折叠的 条评论
为什么被折叠?



