3

侵入型のデータ構造をコーディングしていて、ベース フックとメンバー フックのどちらを使用するか迷っています。コードは何度も呼び出されるため、私の質問は、パフォーマンスと、コンパイラがそのようなコードをどの程度インライン化できるかに関するものです。

基本フックは継承に基づいていますが、メンバー フックはテンプレート パラメーターを介してメンバーへのポインターを使用します。私の設計上の選択はメンバーフックを使用することですが、私の経験では、ポインターは静的コードよりも最適化がはるかに難しいと言われています。一方、これらのポインターはすべてコンパイル時に認識されており、おそらくコンパイラーは何が起こっているかを分析する魔法を行うことができます。

誰もこれについて経験がありますか?データ、ヒント、参考文献は大歓迎です。

4

2 に答える 2

0

ほとんどの「X vs Y、どちらが速いですか?」この質問に対する適切な答えは 1 つだけです。

プロファイラーに聞いてください。

経験は曖昧です。人間の推測では、コンパイラー最適化のすべての核心的な詳細と落とし穴を考慮に入れることはできません。コンパイラは、最適化できるものと最適化の程度が異なります。場合によっては、同じコンパイラの異なるバージョン間でも。特定のプラットフォーム上特定のコンパイラによって実装が最適化される方法よく知ることができる唯一のことは、典型的な問題サイズでのパフォーマンスの適切な測定です。

何が速いかを知っていて、きれいなグラフを見せてくれる人がいたとしても、それらの測定を行わないほど彼を信頼できますか? 彼はあなたの特定の環境がどのように見えるか知っていますか? 彼と彼のグラフは、あなたの問題の特別なコーナーケースを考慮に入れていますか? おそらくそうではありません。

于 2014-02-11T13:31:11.910 に答える