なぜdoesntのJITコンパイラ(Java)の結果を保存しますか?

アクセル・クーン:

私はここからJITコンパイラについて研究したよう:ジャストインタイム(JIT)コンパイラを何でしょうか?そして

.dllは、Windows用のJava JITによって生成されるいかなる* .exeまたは*はありません。これは、メモリ(RAM)にプロセッサ命令を書き込み、そこからそれを実行します。ファイル・ヘッダーおよびすべてと別のPEファイルを作成する必要はありません

私の質問はされWHY JITコンパイラ(Javaは)結果を保存しないのですか?それは次回の打ち上げのための時間を節約するためにコンパイルされたコードを格納するのに有用ではないですか?

(私は上を強調するので私の質問は、上記と異なるWHY

ハルク:

JITのouputを、各ランのために異なっていてもよい - それは現在の負荷パターンを最適化することができます。これは、時にはそれがよりagressively再利用可能にする必要があり、プリコンパイルされたコードのために可能であるものよりも最適化することができます。

負荷パターンの変更および最適化が準最適またはさらに有害であることが判明した場合、JITは、最適化を解除し、おそらくは異なる最適化を試みることができます

(も参照のHotSpotのダイナミックデ最適化について

さて、それは時々周りの様々なコンパイルされたバージョンのこれらの結果を維持し、後でそれを再利用するためにいくつかのパフォーマンスを救うかもしれませんが、コードのセクションは、すでにしてコンパイルされている場合、それはまた見つけることができるように簿記、かなりの量を必要とします現在、関連する最適化。

私はちょうど価値の努力とは見なされないこととします。ファイルIOとコードの小さなセクションの通常高速なコンパイルを行うとの間にそのAのトレードオフ。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=187468&siteId=1