4

最高のパフォーマンスを確保するには、次のことを行うことをお勧めします。

  • 基本型 ( int, double...) を値渡し
  • クラスを const 参照で渡す

現在、コンパイラで C++11 と完全な最適化を使用している場合、基本型を const 参照で渡すときにオーバーヘッドはありますか?

さらに、次の機能は次のようになりますTint

template <typename T> inline void f(const T& x);

より遅くなる:

template <typename T> inline void f(const T x);
4

1 に答える 1

6

コンパイラが実際にコードをインライン化している場合 (単純なテンプレートでは一般的です)、違いはありません。関数をインライン化できず、アウトオブライン定義が呼び出されると、問題が明らかになります。

その場合、参照を渡すと、変数にアクセスするときに追加の逆参照が必要になる可能性があります (少なくとも最初の 1 回、場合によっては複数回)。現在の関数の外で変数にアクセス/変更できないことを知っています。

于 2013-07-22T04:39:44.660 に答える