返回std :: Vector<>通过引用很慢?

时间:2012-10-12 19:53:18

标签: c++ vector std

我已经对此进行了测试,并且与直接抓住该成员相比,通过引用传递的速度大约是其两倍。例如。 -

class Mesh {

    public:
        inline std::vector<Vector3>& GetVertices() { return m_vertices; }

    private:
        std::vector<Vector3> m_vertices;
};

如果我经常调用GetVertices()来获取每个帧,那么它比直接访问m_vertices慢得多。但我想保持m_vertices私密。我该怎么办?

为什么它会变慢?

2 个答案:

答案 0 :(得分:3)

编译器将内联该代码并将其转换为对成员的直接访问(除了以下任何优化级别:我想慢慢运行

答案 1 :(得分:0)

您是否有任何虚拟功能未显示?也许Mesh是子类,而GetVertices()是通过基类调用的纯虚函数?这会让事情略有减缓。

如果可以的话,另一种可能性是返回 const 引用而不是非const引用。