创建类对象然后调用函数与使用带作用域解析操作符的静态函数的性能差异



如果您这样做,是否会有性能差异(内存和速度都被考虑,无论大小):

ClassA a;
a.functionb();

vs:

ClassA::functionb();

这取决于创建类对象的开销。

如果这个便宜,没有区别。此示例编译为完全相同的二进制文件,因此具有相同的执行速度。

class Foo{
public:
static int bar() {return 1;}
};
class Foo2{
public:
static int bar() {return 1;}
};

int main () {
//return Foo::bar();
Foo2 foo ;
return foo.bar();
}

总论:如果你关心性能,首先要做的是设置一个时间测量并检查你的热点在哪里。这可以使用perfvTune之类的工具来完成。请确保使用高优化级别的编译器(-O3)。

是否存在性能差异

取决于细节。如果程序被优化,类是无状态的,如果它没有用户定义的构造函数和析构函数,并且实例具有自动存储持续时间或是临时的,并且没有间接涉及-即所有条件相等-那么我看不出为什么会有性能差异的原因。

您可以通过测量来发现在实践中是否存在显著的性能差异。

相关内容

  • 没有找到相关文章

最新更新