C ++参考长度性能

时间:2013-09-16 23:57:12

标签: c++ reference complexity-theory

我的问题很简单,参考长度导致的性能损失是多少。我无法解释自己,但这里是样本:

之间的

C* pC = m_a->m_b->m_c;

和这个表达

C* pC = m_b->m_c;

我问这个是因为我有一个全局类,它具有Singleton模式并保存所有内容。我正在访问其成员中的所有成员。

class Global
{
    A* a;
    X* x;
};

class A { B* b; };
class B { C* c; }; // etc

class X { Y* y; };
class Y { Z* z; };
class Z
{
    void foo() { Global::GetInstance()->a->b->c->foo(); }
}

这是一个好设计吗?有什么建议吗?我在这个话题上遇到了一些麻烦Qt Architecture Advice Needed

1 个答案:

答案 0 :(得分:2)

每一个 - > operator是一个索引间接,根据处理器的不同而花费一到两个周期,如果它的管道足够好,它可能是不可见的。

然而,真正的问题是“与什么相比?”您正在考虑使用哪些其他实现技术来解决此问题?除非你有一个可行的选择,否则你的问题实际上毫无意义。

类似地,关于虚拟和非虚拟功能的相对效率的常见问题是没有意义的,除非它考虑如何从两个方面获得相同的效果。在非虚拟情况下,这至少相当于'if'或'switch',其成本必须加入到比较中。