当我执行以下操作时,我看到紧密循环中的巨大性能差异:
MyObject foo = bar.GetObject();
Run Code Online (Sandbox Code Playgroud)
VS
MyObject* foo = bar.GetObjectPtr();
Run Code Online (Sandbox Code Playgroud)
类函数的具体细节是:
class MyClass
{
MyObject someobject;
MyObject& GetObject() { return someobject; }
MyObject* GetObjectPtr() { return &someobject; }
} bar;
Run Code Online (Sandbox Code Playgroud)
第一行中的赋值比第二行慢得多.有人可以解释发生了什么吗?这是否与默认的复制分配有关?
特别,
发布的代码中的真正问题是提出的大规模封装违规.