回答:
JIT(Just-In-Time)コンパイラは、実行時、つまりプログラムの実行中にコードをコンパイルします。したがって、コンパイルのコストはプログラムの実行時間の一部であるため、最小限に抑える必要があります。
これの反対は、基本的に「バッチコンパイラ」と同義である事前(AOT)コンパイラです。これにより、ソースコードがマシンコードに変換され、マシンコードのみが配布されます。したがって、コンパイラーは、結果のプログラムの実行時間に影響を与えないため、非常に遅くなる可能性があります。
今日、人々が「コンパイラ」と言うとき、それらは通常AOTコンパイラを意味します。実際、「AOTコンパイラ」という用語は、JITでコンパイルされた言語、特にJavaScript用のAOTコンパイラを作成し始めたとき、比較的最近人気が出始めたばかりです。C#などのこれらの言語の多くは、VMの中間言語にコンパイルされ、実行時にマシンコードにJITコンパイルされます。「AOTコンパイラ」という用語には、ソースコードがマシンコードに直接コンパイルされるという意味が含まれているため、実行時にJITコンパイルの形式は必要ありません。
「バッチコンパイラ」は、この時点では少し古風な用語です。用語が普及したときのバッチコンパイラとの本当の対照は、インクリメンタルコンパイラでした。インクリメンタルコンパイルは、多くの場合、REPLがあり、特定の関数をコンパイルするために言語実装を対話的に要求できるLispなどの言語に関連付けられています。以前にコンパイルが要求されていない関数が実行された場合、通常は解釈されます。対照的に、バッチコンパイラは、すべての関数を一度に、つまりバッチでコンパイルしました。
意味はあなたが与える引用の中に暗示されています!これは、タスクがリアルタイムで実行されないときに使用されるコンピューティング用語のバッチ処理に由来しますが、負荷(多くの場合、リアルタイムアクティビティの場合)が少ないときにオペレーティングシステムによる後の実行がスケジュールされます。
バッチコンパイラは、ユーザーがコンパイルの結果を待っていないときにコンパイルを行うものです。より現代的な用語を使用して、バックグラウンドで行われます。
これは、JIT(Just-In-Time)の逆であり、処理をより徹底的に行うために余分な時間を費やすことなく、必要なときに「ライブ」で実行されます。
バッチコンパイルの速度が遅いことは、次のように説明できます。
ソース:https : //xkcd.com/303/
またはこれでさえ: