「インタープリター」の版間の差分
ナビゲーションに移動
検索に移動
Administrator (トーク | 投稿記録) |
Administrator (トーク | 投稿記録) |
||
6行目: | 6行目: | ||
== ハイブリッド方式 == | == ハイブリッド方式 == | ||
− | 最近はインタープリターと[[JITコンパイラー]] | + | 最近はインタープリターと[[JITコンパイラー]](起動時に[[コンパイル]]する方式)のハイブリッド形式が主流である。 |
− | + | ハイブリッド方式では、[[アプリ]]を起動した瞬間はインタープリターで即座に実行を開始し、その裏で[[JITコンパイラー]]がゴリゴリに最適化を施した[[コンパイル]]を行い、何事もなかったかのように動作を切り替えるというものである。 | |
インタープリター方式はアプリの「実行速度」が遅い。 | インタープリター方式はアプリの「実行速度」が遅い。 | ||
− | + | [[AOTコンパイル]]方式は「実行プラットフォームの性能を100%引き出せない」という欠点がある。たとえば[[アプリ]]が「[[i386]]向け」だと[[i486]]や[[Pentium]]などで追加された新機能は使われないのである。 | |
− | + | JITコンパイル方式はアプリの「起動速度」が遅い。この起動速度の遅さを改善するため[[AOTコンパイル]]ほど最適化に時間を掛けるわけにもいかない。 | |
つまり理想は「AOTコンパイル並の最適化をJITコンパイルで行う」方式である。しかしアプリの起動に30分も1時間もかかったら大事件だわな。 | つまり理想は「AOTコンパイル並の最適化をJITコンパイルで行う」方式である。しかしアプリの起動に30分も1時間もかかったら大事件だわな。 |
2021年11月29日 (月) 05:12時点における最新版
インタープリター(英語:interpreter)とは、日本語に直訳すると「通訳者」のことであり、コンピューターの世界ではソースコードや中間言語を機械語に同時通訳しながら実行するものをいう。
最近はより新しいものに見せかけソフトウェアの販売を促進する目的で「仮想マシン」などと呼ばれることも多い。
「翻訳と実行」を同時に行うため、実行速度はどうしても遅くなる。
ハイブリッド方式[編集 | ソースを編集]
最近はインタープリターとJITコンパイラー(起動時にコンパイルする方式)のハイブリッド形式が主流である。
ハイブリッド方式では、アプリを起動した瞬間はインタープリターで即座に実行を開始し、その裏でJITコンパイラーがゴリゴリに最適化を施したコンパイルを行い、何事もなかったかのように動作を切り替えるというものである。
インタープリター方式はアプリの「実行速度」が遅い。
AOTコンパイル方式は「実行プラットフォームの性能を100%引き出せない」という欠点がある。たとえばアプリが「i386向け」だとi486やPentiumなどで追加された新機能は使われないのである。
JITコンパイル方式はアプリの「起動速度」が遅い。この起動速度の遅さを改善するためAOTコンパイルほど最適化に時間を掛けるわけにもいかない。
つまり理想は「AOTコンパイル並の最適化をJITコンパイルで行う」方式である。しかしアプリの起動に30分も1時間もかかったら大事件だわな。
そこでハイブリッドだ。最近のJava仮想マシンなんかは「インタープリター」「JIT(ちょい最適化)」「JIT(鬼最適化)」という多段階のハイブリッドらしいぞ。