C ++ 0x RValue引用或其他功能会对流性能产生影响吗?

时间:2010-12-10 13:52:04

标签: c++ c++11 iostream

许多分析表明,当需要性能(速度)时,C ++流不是执行文件或文本字符串操作的最佳方式。 尽管如此,标准流仍然是保证类型安全的好方法。

从我读过的,大部分问题是因为流实现必须1)创建/复制很多小对象2)完全通用(不管理char和wchar的方式相同吗?)等。

无论如何,我在想,也许某些C ++ 0x会允许实现者至少限制对象创建/复制,也许还有其他功能可以进行其他性能改进,也许可以达到printf()性能? / p>

是否有直接影响?或者我们是否必须等待新的实施?或者我们还需要一个新的(类似STL的)流库吗?

1 个答案:

答案 0 :(得分:3)

您可能对my question here中的某些效果比较感兴趣。在常见的实现中,即使是C ++标准库流API中的最低级函数也非常慢,并且查看例如源代码。 Visual C ++的stringbuf类,我没有看到复制小的临时对象。所以右值参考不太可能有用。

AFAICT,C ++ iostream缓慢的主要原因是库开发人员坚持I / O是瓶颈的思维方式,所以没有必要担心I / O库的性能。但I / O绝对不是瓶颈。