C++更快?静态成员函数还是普通的?

问题描述:

我想试试一些表演的东西... 这个问题听起来很愚蠢,但我会试试看。我们假设每个函数都有100行相同的代码。 还是做这种差异dosn't真正metter? 哪一个将是执行更快main功能:C++更快?静态成员函数还是普通的?

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

或者这一个:

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

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

也许普通的一个更快,因为静态成员函数需要该类在被执行前加载(只有一次)。 – 2012-01-06 09:25:05

+4

@ Mr.TAMER:“加载类”在C++中没有意义。 – sbi 2012-01-06 09:32:30

+0

@ AlfP.Steinbach:个人而言,让我困惑的是人们提出这些性能问题,而不是试图理解底层发生了什么(以及语法如何转换为可执行代码)。如果他们花时间研究这些结构是如何实际执行的,那么他们就会明白他们的问题是多么毫无意义。 – 2012-01-06 09:42:51

没有什么区别,编译器的工作原理了地址在编译的时候,在一个调度执行它在运行时进行一步操作(如果它没有内联,那么它对两者同样有效/可能)。

+0

谢谢,我不害怕说我不知道​​这一点,你的回答可以帮助我很多,所以我可以在同一时间学习C++的同时继续编写自己的书库。干杯!投票+ – codekiddy 2012-01-06 09:52:45