我每次回路通过一类,这是我通过指针访问一个数组里面,我问自己,这同一个问题:性能:指针引用在C++
是否每个迭代由指针的解引用开销产生?解除引用链加起来吗? 例如:
ClassA *a = new ClassA();
ClassB *b = new ClassB();
for(int i = 0; i < 10; i++){
a->b->array[i].foo();
}
如果我猜的话,我会说这涉及20提领步,每一个三分球,10次迭代。 但我可以想象,它减少到10,因为链接的指针被编译器翻译为单个指针。我甚至可以想象,由于一些缓存 - 巫术或其他东西,它减少到1。
有人可以告诉,也许向我解释,这是如何表现明智?会真的很感激它!
顺便说一句,我知道这种类似的问题已经在这里得到解答,但我无法推断出这个特定主题的答案。所以请不要责怪我再次提出这个话题。
是B的一员吗? ClassB的全局作用域b实例与未知对象b(它是A的成员)有什么关系? – franji1
“*如果我不得不猜测,我会说这涉及20个解除引导步骤*” - 30,实际上。 ''a->','b->'和'array [i]'都是指针解引用,所以每循环迭代有3次解引用,10次迭代。 –