比較や割り当てはもっと高価ですか?
-
06-07-2019 - |
質問
アルゴリズムを読み始めたので、対処する際に疑問に思う同じタイプのプリミティブで、どちらがより高価な操作、割り当て、または比較ですか?これは言語によって大きく異なりますか?
解決
マイクロ最適化は、ほとんどの場合、間違っていることです。プログラムの実行が遅すぎる場合を除き、起動しないでください。プロファイラーを使用して、低速部分がどこにあるかを正確に判断してください。
一度行ったら、キャッシュミスはほぼ間違いなく最適でない命令よりも悪いため、コードとデータの局所性の改善について確認することをお勧めします。
これが行われている場合、割り当てベースまたは比較ベースのアプローチを使用できるというかなり奇妙なケースでは、両方を試して、時間を計ってください。マイクロ最適化は数字ゲームです。数値が十分でない場合は、その理由を調べてから、実際に機能していることを確認してください。
では、比較とはどういう意味ですか?条件付きジャンプは、漠然と現代のプロセッサに問題を引き起こしますが、プロセッサが異なれば動作も異なり、特定のプロセッサが動作を遅くするという保証はありません。また、どちらかがキャッシュミスを引き起こす場合、それはおそらく何であれより遅いものです。
最後に、言語は通常マシンコードにコンパイルされ、比較や代入などの単純なものは通常同じようにコンパイルされます。大きな違いはCPUの種類です。
他のヒント
あなたはどう思いますか
最低レベルでは1回は2回の読み取りを行い、もう1回は読み取りと書き込みを行います。
しかし、なぜあなたは本当に気にする必要がありますか?このレベルでパフォーマンスを気にする必要はありません。 Big-O
向けに最適化する所属していません StackOverflow