2012-01-06 5 views
4

私はいくつかのperformaceものを勉強しようとしています... この質問は愚かに聞こえるかもしれませんが、私は試してみましょう。 各機能に同じコードの100行があるとしましょう。 この違いは本当に魅力的ではありませんか? 1はmain機能での実行に速くなりますどの:C++もっと速いですか?静的メンバー関数か普通のものか?

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

か、この1:

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

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

通常、静的メンバー関数は、実行可能になる前にクラスをロードする必要があるため(1回のみ)、通常の方法より高速です。 –

+4

@ Mr.TAMER:「クラスの読み込み」はC++では意味を持ちません。 – sbi

+0

@ AlfP.Steinbach:個人的に、私が困惑させるのは、フードの中で何が起こっているのか(そして構文がどのように実行可能なコードに変換されるのか)を理解しようとするのではなく、彼らがそのような構造が実際にどのように実行されるかを研究する時間があれば、彼らは彼らの質問がどれほど無意味であるかを理解するだろう。 –

答えて

9

差はありません、コンパイラはコンパイル時にアドレスを動作し、1でそれに実行をディスパッチ実行時に一歩進んでください(インライン展開しない場合でも、どちらかと同じように/可能性があります)。

+0

ありがとう、私はそれを知らなかったと言うことを恐れていない、あなたの答えは私が同じ時間にC + +を学んでいる間私のライブラリーを書くことができるように多くを助ける。乾杯!投票+ – codekiddy

関連する問題