As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center用于指导。
我在读这篇文章,所以:
https://stackoverflow.com/a/3183607/997112
这是C++与C语言之间的一个性能问题的答案。这张海报来自一个高频交易的背景,他说他为高频工作写了自己的类库,因为他在寻找纳秒的节省。在他的文章中,他提到他很少使用C++ STL——这让我很吃惊。
我的问题是,C++ STL在性能方面是完全优化的,还是只对普通用户进行了优化?用C语言将一些函数包装在本机数组上会比用Vector或List更快吗?boost中是否有性能更好的容器?
我很感激这些类对于99%的用户来说足够快,但是我的问题是针对其他1%的用户。

最佳答案

这个问题不会得到任何说明“STL是最优的”的答案,原因有很多:
至少有六种stl实现,当然也有一些没有优化,而另一些是优化的(但请参阅下一项)。
大多数优化都是对使用模式进行假设的,并且对某些使用模式是悲观的。要真正为特定的用例进行优化,它需要知道如何使用某些东西。
大多数STL用户以一种或另一种形式滥用组件,而一些适当的使用仅通过C++ 2011真正支持(例如,使用本地自定义分配器)。
当人们谈论STL时,他们通常会提到用算法装运集装箱的例子尽管STL很有用,但它的重点是算法,这些算法有更好的机会被优化毕竟,stl的全部意义在于,您可以在自定义创建的容器中轻松使用算法!为什么要费心优化容器?但是,请注意,第1至3项也适用于算法。
STL有一个很好的抽象,但不是很“那里”特别是,当组合多个算法时,比单独应用算法更好的方法存在,但STL接口并不真正支持这一点。
尽管如此,要想找到比典型的优化stl实现更好的东西,需要相当多的努力。我会质疑任何人写的断言,比如说,在一天内对std::vector<T, A>的替换,并且声称对于std::vector<T, A>的典型用例来说是更快的(参考C++ 2011版本,其中分配器可以被合理地使用)。

关于c++ - STL/标准C++容器的最佳效率如何? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13595487/

10-16 05:09