私は決定論的実行について読んでいました。つまり、同じ入力に対して同じ出力があります。実行時に決定論的関数を最適化することを考えているプログラマーライターはいないかと思いました。たとえば、階乗関数を考えてみましょう。実行時に、同じ入力値で継続的に呼び出されていることが検出された場合、コンパイラーは出力値をキャッシュし、階乗関数を実行する代わりに、その出力値を直接使用できます。いい研究トピックのようです。このトピックに関する論文や作品はありますか?
4 に答える
4
これは通常、メモ化と呼ばれ、関数型言語ではかなり一般的な最適化です。
于 2011-05-26T22:51:56.120 に答える
1
それは可能ですが、私が知る限り、コンパイラーがそれを行うことは一般的ではありません。問題は、ユーザーが好きなだけ多くのタイプと平等を好きなように定義できることです。ヒープの割り当てなどでは、そのようなことを証明するのは非常に困難です。基本的には実行できますが、関数に単純な数値計算が含まれている場合に限ります。これはまれであり、通常は価値が高くありません。
于 2011-05-26T21:56:57.720 に答える
1
あなたは参照透過性について話している。そして、それは関数型プログラミングの大きな部分です。
http://en.wikipedia.org/wiki/Referential_transparency_(computer_science)
于 2011-05-26T21:57:11.440 に答える
1
http://blogs.msdn.com/b/vcblog/archive/2008/11/12/pogo.aspxは、プロファイルに基づく最適化について説明しています。
質問自体には答えませんが、一般的に、ランタイム動作を使用してアセンブリを最適化することについて話します
于 2011-05-26T22:00:55.990 に答える