我已经对此进行了测试,并且与直接抓住该成员相比,通过引用传递的速度大约是其两倍。例如。 -
class Mesh {
public:
inline std::vector<Vector3>& GetVertices() { return m_vertices; }
private:
std::vector<Vector3> m_vertices;
};
如果我经常调用GetVertices()来获取每个帧,那么它比直接访问m_vertices慢得多。但我想保持m_vertices私密。我该怎么办?
为什么它会变慢?
答案 0 :(得分:3)
编译器将内联该代码并将其转换为对成员的直接访问(除了以下任何优化级别:我想慢慢运行)
答案 1 :(得分:0)
您是否有任何虚拟功能未显示?也许Mesh
是子类,而GetVertices()是通过基类调用的纯虚函数?这会让事情略有减缓。
如果可以的话,另一种可能性是返回 const 引用而不是非const引用。