0

私はこれをテストしましたが、参照渡しは、メンバーを直接取得する場合に比べて約 2 倍遅くなります。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

コンパイラはそのコードをインライン化し、メンバーへの直接アクセスに変換します ( I want to run slow以外の最適化レベル) 。

于 2012-10-12T20:01:40.907 に答える
0

表示していない仮想関数はありますか?たぶんMesh子クラスであり、GetVertices()は基本クラスを介して呼び出される純粋仮想関数ですか?それは物事を少し遅くするでしょう。

もう1つの可能性は、可能であれば、非const参照ではなくconst参照を返すことです。

于 2012-10-12T20:04:26.837 に答える