In dem Beispielcode unten zuteile ich einige Instanzen des Struct Chunk. In den for-Schleifen iteriere ich dann durch den Speicherblock und greife auf die verschiedenen Instanzen zu, indem ich entweder Zeiger oder Referenzen verwende, und weise ihnen einige zufällige Daten zu.Was ist schneller, Zeigerzugriff oder Referenzzugriff?
Aber welche for-Schleife wird am schnellsten ausgeführt? Nach meinem Wissen würde ich sagen, dass die Referenzschleife am schnellsten ist, da sie keine Dereferenzierung erfordert und direkten Zugriff auf die Instanz im Speicher hat. Wie falsch/richtig bin ich?
struct Chunk {
unsigned int a;
float b;
const char* c;
};
int main() {
Chunk* pData = new Chunk[8];
for(unsigned int i = 0; i < 8; ++i) {
Chunk* p = &pData[i];
p->a = 1;
p->b = 1.0f;
p->c = "POINTERS";
}
for(unsigned int i = 0; i < 8; ++i) {
Chunk& r = pData[i];
r.a = 1;
r.b = 1.0f;
r.c = "REFERENCES";
}
delete [] pData;
return 0;
}
Hängt von Ihrem Compiler ich denke, aber mit mir kompilieren sie auf den gleichen Code. Die meisten C++ - Entwickler bevorzugen Referenzen als eine Frage des Stils. –
Denken Sie daran, dass eine Referenz wie ein automatisch de-referenzierter Zeiger ist. – tadman
@tadman Nicht gemäß der Norm. –