gpt4 book ai didi

c++ - 指针访问或引用访问哪个更快?

转载 作者:可可西里 更新时间:2023-11-01 18:20:43 26 4
gpt4 key购买 nike

在下面的示例代码中,我分配了结构 block 的一些实例。在 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;
}

最佳答案

它们应该与任何非白痴编译器相同(不是大致相同,而是完全相同)。在幕后,引用指针(在 99% 的编译器上)。没有理由有任何不同。

迂腐:第二个循环可以更快(可能不会),因为数据已经在缓存中,但仅此而已。 :)

关于c++ - 指针访问或引用访问哪个更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12408186/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com