循环调用相同虚函数的开销

问题描述 投票:0回答:1

我有一些代码具有这样的结构:

([doStuff2()将通过Class1指针调用。它将在循环中调用doStuff()。有多个类,例如Class3,因此Class2将具有多个模板实例。]

struct Class1{

    virtual void doStuff2() = 0;

};

template<typename T> struct Class2 : public Class1{

    virtual void doStuff() { /*code*/};

    void doStuff2() override {

        // Call this in a huge loop.
            doStuff();

    }

};

struct Class3 : public Class2<SomeType>{

    void doStuff() override final { /*code*/};

};

//...

void someFunc(Class1 *p_class1){

    p_class1->doStuff2();

}

我的问题:是否可以通过非虚拟方式调用doStuff(),因此不会产生开销?在Class2中将其设置为纯虚拟并在Class3中将其设置为最终帮助吗?

在这样的循环中调用同一个虚函数是否具有虚函数的所有性能问题?

c++ performance loops templates virtual-functions
1个回答
2
投票

这些评论对为什么这可能是过早的优化有一些好的建议,但是可以直接回答您的问题:

© www.soinside.com 2019 - 2024. All rights reserved.