我的问题很简单,参考长度导致的性能损失是多少。我无法解释自己,但这里是样本:
之间的
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
答案 0 :(得分:2)
每一个 - > operator是一个索引间接,根据处理器的不同而花费一到两个周期,如果它的管道足够好,它可能是不可见的。
然而,真正的问题是“与什么相比?”您正在考虑使用哪些其他实现技术来解决此问题?除非你有一个可行的选择,否则你的问题实际上毫无意义。
类似地,关于虚拟和非虚拟功能的相对效率的常见问题是没有意义的,除非它考虑如何从两个方面获得相同的效果。在非虚拟情况下,这至少相当于'if'或'switch',其成本必须加入到比较中。