一部のプログラムでは、パフォーマンスを向上させるために、関数のpublic
代わりに変数を使用することが推奨されていることがわかりました。これは悪い習慣だと考えられていることを私は知っています。また、コンパイラがとを作成できることも知っています。これは、パフォーマンスの低下がない変数のように動作することを意味しませんか?get
set
get
set
inline
3 に答える
コンパイラはこれらの関数をインライン化する可能性が高く、関数呼び出しのオーバーヘッドはありません。getter/setter と public メンバー変数の両方を避け、これらが使用される理由を考え、そのクラスでそれを行う関数を提供します。getter/setter/public メンバー変数のほとんどは、この方法で削除できます。
コンパイラが単純なゲッターとセッターをインライン化することを常に期待できるため、同じパフォーマンスが得られます。
ただし、値で返す場合にゲッター/セッターを使用すると、プライベートメンバーへのポインターまたは参照を取得できないなど、違いがある場合があります。また、セッターには追加のコピーまたは移動操作がある場合があります。
とにかく、パブリックアクセスが必要な場合は、パブリック変数を使用してください。これらはベスト プラクティスです。
コンパイラが実際にそれらをインラインにすることを選択した場合、それらはパフォーマンスに関して同じである必要があります。キーワードはコンパイラのinline
単なるヒントであり、厳密には従うべきではありません。逆もまた同様ですinline
。キーワードでマークされていない関数をインライン関数にすることができます。
ただし、何らかの理由でコンパイラがそれらをインライン化しない場合は、呼び出しのパフォーマンスが明らかに低下します。