事前コンパイルとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > 事前コンパイルの意味・解説 

事前コンパイラ

(事前コンパイル から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/06/30 10:40 UTC 版)

事前コンパイラAhead-Of-TimeコンパイラAOTコンパイラ)とは、アプリケーション実行前に(事前に)ソースコード中間表現(中間言語)を機械語へ変換(コンパイル)するコンパイラのこと。対義語は実行時コンパイラ(Just-In-Timeコンパイラ、JITコンパイラ)。

概要

JITコンパイラはアプリケーションの実行直前または実行中に、中間言語コードを実行環境のプロセッサに応じた機械語コードにコンパイルするため、インタプリタによる逐次実行方式よりは高速であるものの、必要なコードがすべて機械語に変換されてメモリ上に展開され、定常状態に到達する(ウォームアップが完了する)まではアプリケーションの性能を低下させることがある。特に起動にかかる時間が増加するため、起動と終了を繰り返すアプリケーションで問題になることがある。AOTコンパイラは実行時コンパイルの必要性を無くし、ソースコードから中間言語コードを生成した後に、ネイティブの機械語コードを生成させる方式で性能低下を回避できる。JITコンパイラと区別するためAOTコンパイラという言葉が使われるが、C言語C++など、AOTコンパイラが事実上の標準となっている言語では、わざわざAOTをつけずに単にコンパイラと呼ばれることがほとんどである。

AOTコンパイルは比較的高性能で潤沢な計算資源(高速なCPU、大容量のメモリやストレージなど)を搭載した開発環境において実行され、JITコンパイルよりも時間的・空間的リソースを費やして入念な最適化を実行できる余裕があり、またコンパイラに渡すオプションによって最適化レベルをアプリケーション開発者側で制御しやすい。ただし、AOTコンパイルしたコードが常にJITコンパイルしたコードよりも高速であるとは限らない。一般的にAOTコンパイラは事前に特定の命令セットを仮定し、ターゲット環境が必ずサポートする命令を使ってコードを生成するため、最適化性能はその制約を受けやすい。AOTコンパイルでSIMDのような拡張命令を利用して最適化する場合、拡張命令をサポートしない環境でもプログラムを実行できるようにするためには、個別にコードを分けて出力し、ファットバイナリのような形で提供しなければならず、実行ファイルのサイズ増大を招きやすい。一方、JITコンパイルは完全に実行環境に限定したコードのみを生成することができ、実行環境にとって最も効率のよいシンプルかつ高速なコード生成をしやすい[1]

.NETのAOTサポート

C#Visual Basic .NETをはじめとする.NET言語は、JITコンパイル方式が基本ではあるが、もともと.NET Frameworkでは、マネージアセンブリから事前にネイティブコードを生成してインストールするツールとして「Ngen.exe (ネイティブ イメージ ジェネレーター)」をサポートしていた[2]。しかし、これは主に起動と終了を繰り返すことで蓄積されるオーバーヘッドが問題となるサーバーアプリケーション向けのソリューションであり、手軽に利用できるものではなく、また一部の動的な機能が利用できなくなるなどの欠点もある。このツールはJITコンパイラとともに、Windows 8.xのWindowsストアアプリでも使われていた[3]Windows 10UWPアプリケーションでは、「.NET Native」と呼ばれる類似の事前コンパイル技術がサポートされた[4]

.NET Coreでは、バージョン3.0でAOTコンパイルの一種であるReadyToRun形式がサポートされた[5]。2022年末にリリースされた.NET 7ではネイティブAOTがサポートされたが、ネイティブAOTと完全に互換性のあるライブラリは限定されている[6]

脚注

関連項目

外部リンク

.NET
Java



事前コンパイル

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/26 20:47 UTC 版)

共通中間言語」の記事における「事前コンパイル」の解説

CLI互換実行環境には、実行時JIT処理を省いてより高速実行できるようにするため、アセンブリの事前コンパイルを処理するためのオプションがある。 .NET Frameworkには、事前コンパイルを行うネイティブ イメージ ジェネレーター英語版) (Native Image GeneratorNGEN) と呼ばれる特殊なツールがある。Monoにも、事前コンパイルを処理するためのオプションがある。

※この「事前コンパイル」の解説は、「共通中間言語」の解説の一部です。
「事前コンパイル」を含む「共通中間言語」の記事については、「共通中間言語」の概要を参照ください。

ウィキペディア小見出し辞書の「事前コンパイル」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「事前コンパイル」の関連用語

事前コンパイルのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



事前コンパイルのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの事前コンパイラ (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaの共通中間言語 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS