0

もしそうなら私は傷つく

  • 定数ポインタは通常のポインタよりも速いですか、遅いですか? (定数ポインターは、そのアドレスを変更できないポインターです)。宣言された as, int* const x;
    • 定数 int へのポインターは、int へのポインターよりも高速ですか? const int *x;
    • 定数 int への定数ポインターは、int へのポインターよりも高速ですか? 例 int const * const x; int* y; ...では、x は y よりも速いでしょうか? (配列インデックスで使用されている場合)

乾杯、

4

2 に答える 2

3

それらはより速いかもしれませんが、必ずしもそうである必要はありません。
肝心なのは、const の正確さを使用して、正直なプログラマーが間違いを犯すのを防ぎ、パフォーマンスを向上させるためではなく、コードをより直感的にすることです。最新のコンパイラのほとんどは、自動的に処理します。

于 2013-07-25T12:11:32.337 に答える
0

通常、コンパイラは何かがそうであるかどうかに「注意を払う」constのではなく、他のヒューリスティックを使用して、使用の間にポインターをリロードする必要があるかどうかを判断します。

確かに、引数としてポインターを取る関数がある場合は、まったく違いはありません。使用するグローバル変数がある場合、コンパイラは「まあ、それconstは . しかし、それが実際に違いを生む可能性は非常に低いです。とにかく、ポインターの並列変更は UB です (そのためにはアトミック変数を使用する必要があります)。関数がコードの途中で呼び出され、コンパイラがその関数をインライン化 (または "フォロー") できない場合、とにかくポインターをリロードする必要があります。

于 2013-07-25T12:14:56.477 に答える