0

我已经对此进行了测试,与直接抓取成员相比,通过引用传递的速度大约是两倍。EG -

class Mesh {

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

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

如果我在每一帧都经常调用 GetVertices() 来获取顶点,那么它比直接访问 m_vertices 慢得多。但我想保持 m_vertices 私有。我能做些什么?

为什么它更慢?

4

2 回答 2

3

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

于 2012-10-12T20:01:40.907 回答
0

有没有你没有展示的虚拟功能?也许Mesh是一个子类,而 GetVertices() 是一个通过基类调用的纯虚函数?这会稍微减慢速度。

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

于 2012-10-12T20:04:26.837 回答