[解決済み] const-correctnessはパフォーマンスを向上させるか?
質問
C や C++のコードで const-correctness を強制することは、保守性に関して良い習慣であるだけでなく、コンパイラが最適化を実行できるようになるかもしれないと何度も読んだことがあります。しかし、私は全く逆のことも読みました。つまり、それはパフォーマンスにまったく影響を与えないということです。
したがって、プログラムのパフォーマンスを向上させるために、const correctness がコンパイラの助けになるような例はありますか?
どのように解決するのですか?
const
正しさがパフォーマンスを向上させることはできないので
const_cast
と
mutable
は言語内に存在し、コードが規則を規則的に破ることを可能にします。これは C++11 でさらに悪化し、あなたの
const
へのポインタである場合があります。
std::atomic
へのポインタである可能性があり、コンパイラは他のスレッドによってなされた変更を尊重しなければならないことを意味します。
とはいえ、コンパイラが生成したコードを見て、それが実際に与えられた変数に書き込まれているかどうかを判断し、それに応じて最適化を適用するのは些細なことです。
とはいえ、すべて
const
の正しさは
良い
というのは、保守性に関して良いことです。さもなければ、あなたのクラスのクライアントがそのクラスの内部メンバを壊してしまうかもしれません。例えば、標準的な
std::string::c_str()
-- もしこれが const 値を返せなかったら、文字列の内部バッファをいじくりまわすことができるようになります!
を使わないでください。
const
はパフォーマンス上の理由で使わないでください。保守性の理由から使用してください。
関連
-
[解決済み] テスト
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] なぜテンプレートはヘッダーファイルでしか実装できないのですか?
-
[解決済み] Linux上で動作するC++コードのプロファイリングを行うにはどうすればよいですか?
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み] 0.1fを0にすると、なぜ10倍もパフォーマンスが落ちるのですか?
-
[解決済み] Pythonスクリプトのプロファイリングはどのように行うのですか?
-
[解決済み] Eclipseを高速化する方法とは?
-
[解決済み] noexceptを本当に使うべきはいつですか?
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】LLVMで暗黙のうちに削除されたコピーコンストラクタの呼び出し
-
[解決済み】識別子 "string "は未定義?
-
[解決済み】C++のGetlineの問題(オーバーロードされた関数 "getline "のインスタンスがない
-
[解決済み】Cygwin Make bash コマンドが見つかりません。
-
[解決済み] error: 'if' の前に unqualified-id を期待した。
-
[解決済み】リンカーエラーです。"リンカ入力ファイルはリンクが行われていないため未使用"、そのファイル内の関数への未定義参照
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】指定範囲内の乱数で配列を埋める(C++)
-
[解決済み】C++ - 適切なデフォルトコンストラクタがない [重複]。
-
[解決済み】変数やフィールドがvoid宣言されている