1

一部のプログラムでは、パフォーマンスを向上させるために、関数のpublic代わりに変数を使用することが推奨されていることがわかりました。これは悪い習慣だと考えられていることを私は知っています。また、コンパイラがとを作成できることも知っています。これは、パフォーマンスの低下がない変数のように動作することを意味しませんか?getsetgetset inline

4

3 に答える 3

4

コンパイラはこれらの関数をインライン化する可能性が高く、関数呼び出しのオーバーヘッドはありません。getter/setter と public メンバー変数の両方を避け、これらが使用される理由を考え、そのクラスでそれを行う関数を提供します。getter/setter/public メンバー変数のほとんどは、この方法で削除できます。

于 2013-01-17T10:01:11.070 に答える
1

コンパイラが単純なゲッターとセッターをインライン化することを常に期待できるため、同じパフォーマンスが得られます。

ただし、値で返す場合にゲッター/セッターを使用すると、プライベートメンバーへのポインターまたは参照を取得できないなど、違いがある場合があります。また、セッターには追加のコピーまたは移動操作がある場合があります。

とにかく、パブリックアクセスが必要な場合は、パブリック変数を使用してください。これらはベスト プラクティスです。

于 2013-01-17T09:58:24.783 に答える
1

コンパイラが実際にそれらをインラインにすることを選択した場合、それらはパフォーマンスに関して同じである必要があります。キーワードはコンパイラのinline単なるヒントであり、厳密には従うべきではありません。逆もまた同様ですinline。キーワードでマークされていない関数をインライン関数にすることができます。

ただし、何らかの理由でコンパイラがそれらをインライン化しない場合は、呼び出しのパフォーマンスが明らかに低下します。

于 2013-01-17T09:58:32.527 に答える