繁体   English   中英

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

[英]Return std::Vector<> by reference is slow?

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

class Mesh {

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

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

如果我经常每帧调用GetVertices()来获取顶点,则比直接访问m_vertices要慢得多。 但我想将m_vertices设为私有。 我能做什么?

为什么它变慢?

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM