Если я часто использую косвенное обращение, но цель имеет тот же адрес, станет ли цена косвенного обращения почти нулевой?
Пример :-
class C{
public: int database[100000];
//other functions
};
class B{
public: C* c=nullptr;
};
Первый сценарий
int main(){
//--- first scenario (direct call) ---
C c;
for(int n=0;n<100000;n++){
c.database[n]=43;
//call some complex function about "c"//call some non-related function
}
}
Второй сценарий
int main() {
//--- second scenario (indirection) ---
C c;
B b1;
b1.c=c;
for(int n=0;n<100000;n++){
b1.c->database[n]=43;
//call some complex function about "c", but call in "b1.c" form
//call some non-related function
}
}
Оба случая будут стоить (почти) одинаково?
Насколько велика вероятность того, что он будет оптимизирован, чтобы быть почти одинаковым?
Я считаю, что стоимость косвенного обращения низка c
),
но я не знаю, есть ли база Стоимость (b1.c->
против c.
)?
(Я новичок в C ++)
В реальном случае B
является итератором, и C
это связанная структура данных.
Задача ещё не решена.
Других решений пока нет …