【发布时间】:2012-06-22 23:37:02
【问题描述】:
已经提出了 C++“委托”的建议,其开销低于 boost::function:
- Member Function Pointers and the Fastest Possible C++ Delegates
- Fast C++ Delegate
- The Impossibly Fast C++ Delegates
这些想法是否已用于实现std::function,从而获得比boost::function 更好的性能?有没有人比较过std::function 和boost::function 的性能?
我想专门针对英特尔 64 位架构上的 GCC 编译器和 libstdc++ 了解这一点,但欢迎提供有关其他编译器的信息(例如 Clang)。
【问题讨论】:
-
std::function是一个接口,而不是一个实现。如果您想专门询问 VC++ 的 stdlib、libstdc++ 或 libc++,那么这是一个有效的问题,但是您的问题过于宽泛 -
@ildjarn:阅读问题的最后一句话。他在询问具体的实现,尤其是关于 libstdc++。
-
@ildjarn:我不明白提及有关其他实现的信息如何会破坏一个原本有效的问题。如果需要,您可以随时忽略该部分并专门回答有关 libstdc++ 的问题。
-
@abarnert :我认为这将是 C++ 程序员普遍感兴趣的问题。我认为这个问题属于 StackOverflow,即使我可以自己找到答案。 StackOverflow 不仅仅是一个“修复我的错误”网站。 :-) 如果没有人知道答案,我将亲自调查并发布我的调查结果,以造福于社区。span>
-
通过快速检查我拥有的 libstdc++ 和 libc++ 版本(两者都不是完全最新的),它们似乎都使用分配器为成员函数指针创建存储空间,并且我认为所有这些技巧的关键在于避免这种分配。
标签: c++ performance boost c++11 std-function