2012-01-06 33 views
4

我想試試一些表演的東西... 這個問題聽起來很愚蠢,但我會試試看。我們假設每個函數都有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

回答

9

沒有什麼區別,編譯器的工作原理了地址在編譯的時候,在一個調度執行它在運行時進行一步操作(如果它沒有內聯,那麼它對兩者同樣有效/可能)。

+0

謝謝,我不害怕說我不知道​​這一點,你的回答可以幫助我很多,所以我可以在同一時間學習C++的同時繼續編寫自己的書庫。乾杯!投票+ – codekiddy 2012-01-06 09:52:45