38

私はよくconst、次のように、変更されていないローカル変数に使用します。

const float height = person.getHeight();

これにより、コンパイルされたコードが潜在的に高速になり、コンパイラーがさらに最適化できるようになると思います。または私は間違っています、そしてコンパイラはローカル変数が決して変更されないことを彼ら自身で理解することができますか?

4

5 に答える 5

50

または私は間違っています、そしてコンパイラはローカル変数が決して変更されないことを彼ら自身で理解することができますか?

ほとんどのコンパイラは、これを自分で理解するのに十分賢いです。むしろ、マイクロ最適化ではなく、定数の正確性を確保するために
使用する必要があります。constの正しさにより、コンパイラーは正直な間違いを防ぐのに役立ちます。したがって、保守性の理由愚かな間違いを防ぐために、可能な限り使用する必要があります。 const
const

私たちが書くコードのパフォーマンスへの影響を理解するのは良いことですが、過度のマイクロ最適化は避けるべきです。パフォーマンスに関しては、以下に従う必要があります。

80-20ルール:

代表的なデータセットプロファイリングを通じて、リソース20%を使用するコードを特定し、それらのボトルネックの最適化を試みます。80%

于 2012-05-25T02:59:44.267 に答える
18

このパフォーマンスの違いはほぼ確実に無視できますが、コードのドキュメント化の理由から、可能な限りconstを使用する必要があります。多くの場合、コンパイラーはとにかくこれを理解し、自動的に最適化を行うことができます。constパフォーマンスよりもコードの可読性と明快さを重視しています。

于 2012-05-25T02:59:59.480 に答える