以下のサンプルコードでは、構造体Chunkのインスタンスをいくつか割り当てます。 forループでは、私はメモリブロックを繰り返し、ポインタまたは参照のいずれかを使用して異なるインスタンスにアクセスし、いくつかのランダムなデータを割り当てます。ポインタアクセスまたは参照アクセスが高速ですか?
しかし、forループは最も速く実行されますか?私の知る限りでは、参照ループは、逆参照を必要とせず、メモリ内のインスタンスに直接アクセスできるため、参照ループが最も速くなると言います。どのように間違っている/私は右ですか?
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;
}
あなたのコンパイラに依存しますが、鉱山ではまったく同じコードにコンパイルされます。ほとんどのC++開発者は、スタイルの問題として参照を優先します。 –
参照は自動的に参照解除されたポインタのようなものです。 – tadman
@tadman標準に準拠していません。 –