web-dev-qa-db-ja.com

なぜほとんどの匿名関数はJITコンパイルできず、最適化されないのですか?

私は関数型プログラミングについて https://techfindings.one/archives/2652 を読んだだけで、これに遭遇しました:

多くの場合、匿名関数はJITコンパイルできず、最適化されません。

これが事実である理由を誰かが私に説明できますか?

10
thadeuszlay

関数が別の関数内にdeclaredであるため、コンパイラはそれを再コンパイルする必要があると人々が考える、名前付きまたは匿名のネストされた関数に関する一般的な誤解があります外部関数が呼び出されるたび。これは真実ではありません。関数のcodeは、その呼び出しコンテキストがそうでなくても一定であり、 インライン化 にするか、他の方法と同じように最適化できますその他の機能。 この質問 のように、インタプリタ/ JIT言語の実装で主にネストされた関数を使用するプログラマの間で、この混乱は特に強力なようです。

その記事には他にもいくつかの同様の誤解がありますが、彼は問題を理解しておらず、理解していると考えています。関数型プログラミングについて学ぶための信頼できる情報源だとは思いません。

15
Karl Bielefeldt