[英]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.