C++ 静态成员函数和普通成员函数,哪个更快?

4

我正在学习一些性能方面的东西... 这个问题可能听起来很愚蠢,但我会尝试回答。假设每个函数有100行相同的代码。这种差异是否真的很重要?在main函数中执行哪一个会更快呢?

struct A
{
    static void f()
         {
               cout << "static one";
         }
};

或者这一个:

void f()
{
   cout << "non static";
}

int main()
{
      A::f();
      f();
}

可能普通的函数更快,因为静态成员函数需要在可执行之前加载类(仅一次)。 - Tamer Shlash
4
@Mr.TAMER:在C++中,“加载一个类”没有意义。 - sbi
@AlfP.Steinbach:就我个人而言,让我感到困惑的是人们提出这些性能问题,而不是试图理解引擎内部发生了什么(以及语法如何转换为可执行代码)。如果他们花时间研究这些结构实际上是如何执行的,那么他们就会明白自己的问题是多么无意义。 - Matthieu M.
1
@Als:我同意。我认为更有建设性的方式是在回答中解释问题的“愚蠢”之处。一个好的回答根本不需要使用“愚蠢”这样的词语。 - Steve Jessop
@SteveJessop 现在你只是在胡闹。 - StackedCrooked
显示剩余2条评论
1个回答

10

没有区别,编译器会在编译时计算出地址并在运行时一步执行(如果不内联的话,它同样能够/可能使用任何一个)。


谢谢,我不害怕承认我不知道这个,你的回答帮助了我很多,让我可以继续学习C++的同时编写我的库。干杯!点赞+ - codekiddy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接