4

inline私は学校で C++ を「学んだ」のですが、コンパイラが最適化できる場所や内容など、わからないことがいくつかありconstます。

パフォーマンスが重要な場合 (ゲーム プログラミングなど)、クラス属性publicprivate配置protectedすることで、コンパイラはより最適化されたコードを作成できなくなりますか?

以前の先生は、より「安全」または「望ましくない、または許可されていないクラスのアクセス/動作を防ぐ」と言っていたので、結局のところ、属性を not にpublicすると範囲が制限され、物事が固定されるのではないかと思います。

先生を批判するつもりはありませんが (そうすべきでしょう)、私が通っていたプログラミングのクラスはあまり進んでいませんでした...

4

3 に答える 3

6

教師たちは、private と protected を使用して実装を隠し、疑わしいパフォーマンスの最適化を提案する代わりに情報の隠蔽について教えるように言ったのは正しかったです。最初に適切な設計を考え、次にパフォーマンスを考えてみてください。99% のケースで、これがより良い選択になります (パフォーマンスが重要なシナリオであっても)。パフォーマンスのボトルネックは、多くの予期しないケースで発生する可能性があり、設計が適切であれば、はるかに簡単に発生します。

ただし、質問に直接答えるには、スコープを縮小すると、コンパイラが特定の最適化を行うのに役立つ場合があります。メンバーを非公開にすることに関しては、今のところ考えられません。

于 2010-06-29T11:49:45.530 に答える
3

いいえ。メンバーを非公開または保護しても、パフォーマンス上のメリットはありません。もちろん、設計 (情報隠蔽) に対するメリットは非常に大きいです。

于 2010-06-29T11:47:10.093 に答える
2

のようなものはなくpublic、コードがコンパイルされると、パフォーマンスに影響を与えることはprivateありprotectedません。

機械語のようなものはありませんconst(おそらく ROM を除く) が、コンパイラーは値が変化する可能性があるかどうか (場合によっては) を知ることで、プログラムに論理的な最適化を行うことができます。

inline効果がほとんどありません。これは単なるコンパイラへの提案であり、コンパイラは自由に無視できます (そしてしばしばそうします)。コンパイラは、必要に応じて関数をインライン化します。

于 2010-06-29T11:51:32.143 に答える