在下面的示例代码中,我分配了 struct 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;
}
它们应该与任何非白痴编译器相同(不是大约相同,而是完全相同)。在幕后,参考文献are指针(99% 的编译器上)。没有任何差异的理由。
迂腐:第二个循环could更快(可能不会),因为数据已经在缓存中,但仅此而已。 :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)