我每次迴路通過一類,這是我通過指針訪問一個數組裏面,我問自己,這同一個問題:性能:指針引用在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次迭代。 –