Mic*_*lla 7 c++ performance pointers reference
在下面的示例代码中,我分配了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;
}
Luc*_*ore 10
对于任何非白痴编译器,它们应该是相同的(不是大致相同,但完全相同).在引擎盖下,引用是指针(在99%的编译器上).没有理由有任何区别.
迂腐:第二个循环可能更快(可能不是),因为数据已经在缓存中,但就是这样.:)
| 归档时间: | 
 | 
| 查看次数: | 5350 次 | 
| 最近记录: |