c++ - 侵入式数据结构中的成员钩子(Hook)与基本钩子(Hook)

标签 c++ performance templates inlining intrusive-containers

我正在编写一个侵入式数据结构,并想知道是使用基钩子(Hook)还是成员钩子(Hook)。由于代码将被多次调用,我的问题是关于性能以及编译器能够在多大程度上内联此类代码。

基本 Hook 基于继承,而成员 Hook 通过模板参数使用指向成员的指针。 我的设计选择是使用成员 Hook ,但我的经验表明指针比静态代码更难优化。另一方面,所有这些指针在编译时都是已知的,也许编译器可以施展魔法来分析正在发生的事情。

有人有这方面的经验吗?欢迎任何数据、提示或引用。

最佳答案

至于大多数“X vs Y,哪个更快?”这个问题只有一个正确答案:

询问您的分析员。

经验是模糊的。人为猜测无法考虑编译器优化的所有细节和陷阱。编译器的不同之处在于它们可以优化什么以及它们做得有多好。有时甚至在同一编译器的不同版本之间。唯一可以告诉您您的实现如何被您的特定编译器在特定平台上优化的唯一事情是使用典型问题大小对性能进行适当的测量。

即使如果有人告诉您他知道什么更快并给了您一些漂亮的图表:您能足够信任他以进行这些测量吗?他知道你的具体环境是什么样的吗?他和他的图表是否考虑了您问题的特殊情况?很可能不是。

关于c++ - 侵入式数据结构中的成员钩子(Hook)与基本钩子(Hook),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21703000/

相关文章:

c++ - 用于具有不同签名的函数的枚举切换器

c++将指针地址传递给函数

javascript - 在绑定(bind)属性更改时保留模型

javascript - 为什么 Javascript ===/== 字符串相等有时具有常数时间复杂度,有时具有线性时间复杂度?

c++ - 动态调度到模板函数 C++

c++ - 使用模板模板参数合并可变参数模板中的类型

c++ - noexcept + declval 在 MSVC 下编译失败

由值返回的 C++ 类实例不像右值

c++ - WM_KEYDOWN如何处理不同的按键?

Java Libgdx 获取截图非常慢