2

いずれにせよ、大量の計算を必要とするプログラムを書いています。

多くの場合、{3 ~ 4 回の加算または乗算と 1 回または 2 回の if-else チェック} によって値を計算するか、ルックアップ テーブルから値を読み取るオプションがあります。すべてがintです。

このような単純な操作と比較して、メモリの読み取り速度はどのくらいですか?

4

2 に答える 2

3

これは意味のある方法で答えることは不可能です。実際のコードと、使用しているプラ​​ットフォームによって異なります。原則として、機能する可能性のある単純なローカル最適化がある場合は、JITコンパイラーがそれらを実行します。

次のことを行う方がよいでしょう。

  1. シンプルで自然な方法でプログラムを書いてください。
  2. それを機能させます。
  3. 典型的な入力データセット/問題で実行します。十分に速い場合は、停止します。
  4. 典型的な入力データセット/問題を実行するときにコードをプロファイリングします。
  5. プロファイリングの結果を使用して、コード内で最も重要なホットスポットを特定します。
  6. コードを調べて、可能な最適化を特定します。
  7. 最適化をコーディングし、プロファイリングを再実行します。それは物事を改善しましたか?
  8. プログラムが十分に高速に実行されるか、可能な最適化がなくなるまで、手順3から繰り返します。

ルックアップテーブルの問題は、スペースと時間をトレードオフしていることです。スペースの使用量は、アプリケーションが使用する入力の組み合わせの数によって異なります。ルックアップテーブルアプローチは、限られた場合にのみ効果があります。

于 2012-04-19T11:35:16.287 に答える
3

パフォーマンス チューニングの基本原則。「推測するな、測れ」

于 2012-04-19T11:38:19.220 に答える