当我执行以下操作时,我在紧密循环中看到了巨大的性能差异:
MyObject foo = bar.GetObject();
对比
MyObject* foo = bar.GetObjectPtr();
类函数的细节是:
class MyClass
{
MyObject someobject;
MyObject& GetObject() { return someobject; }
MyObject* GetObjectPtr() { return &someobject; }
} bar;
第一行的分配比第二行慢得多。有人可以解释发生了什么吗?这与默认复制分配有关吗?