关于iostreams的效率

    简单测试发现iostreams::stream的效率比我想象中要低...看了一下源码,发现写入流的数据并不是直接写入到device中,而是在内部缓存起来,缓冲区满或者调用flush时才把数据复制到device里,造成不必要的内存拷贝。缓冲的机制对于比较慢的device(如标准io、文件流等)是常用的策略,不过对于我的应用来说(相当于把流输出到vector中)就是不必要的步骤了。仔细阅读手册和源码没发现相关的可配置参数,mailing list提问也没下文。也许新版本会支持,暂且用着,如果效率是瓶颈再自己实现直接写入目标的streambuf跟标准库的stream结合好了,并不难,只是会失去些通用性。

你可能感兴趣的:(Stream,vector,list,IO,测试)