はじめに
最近事後コンパイラについて調べたので、事前コンパイラ・実行時コンパイラと併せてメリットデメリットをまとめてみました
事前コンパイラ
AOTコンパイラとも呼ばれる。
コードを事前に機械語などにコンパイルして、それを実行する。単にコンパイラというときは大抵これのこと
メリット
- 実行時のコストが低い
- コンパイルに時間をかけれるのでより最適化できる場合がある
デメリット
- 実際に実行する環境がわからないので、環境依存の処理などが難しい
実行時コンパイラ
JITコンパイラとも呼ばれる。
コードを中間言語にコンパイルしておいて、実行時に機械語などに翻訳・実行する。
メリット
- 実行環境などが分かるので、より最適化できる場合がある
- 様々な環境に対応することが容易
デメリット
- コンパイルのコストが実行時にかかる
事後コンパイラ
BOTコンパイラとも呼ばれる。
インタプリタなどで実行し、実行が終了した後に機械語などにコンパイルする。
メリット
- 入出力や実行プロセスがわかるので、より最適化できる場合がある
- 実行時のコストが低い
- コンパイルに時間をかけれるのでより最適化できる場合がある
デメリット
- 結局インタプリタなどで実行するため意味はない
おわりに
事後コンパイラなんて無いです