「JITコンパイラ」を編集中

ナビゲーションに移動 検索に移動

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。

最新版 編集中の文章
1行目: 1行目:
 
'''JITコンパイラ'''(読み:じっとこんぱいら、語源:Just In Time Compiler)とは、[[プログラム]]を実行する直前に[[ソースコード]]を[[コンパイル]]する方法のことである。
 
'''JITコンパイラ'''(読み:じっとこんぱいら、語源:Just In Time Compiler)とは、[[プログラム]]を実行する直前に[[ソースコード]]を[[コンパイル]]する方法のことである。
  
==概要==
+
== 概要 ==
 
JITコンパイラとは、[[インタプリタ]]の使い勝手で、[[AOTコンパイラ]]の速度を得るために考えられた手法である。
 
JITコンパイラとは、[[インタプリタ]]の使い勝手で、[[AOTコンパイラ]]の速度を得るために考えられた手法である。
  
 
*[[インタプリタ]]に[[ソースコード]]を食わせると[[プログラム]]は走りだすが遅い。
 
*[[インタプリタ]]に[[ソースコード]]を食わせると[[プログラム]]は走りだすが遅い。
*[[コンパイラ]]は[[コンパイル]]し、別途実行するとか使い勝手が悪い。
+
*[[コンパイラ]]は[[コンパイル]]して実行してと使い勝手が悪い。
 +
なら、[[インタプリタ]]風に[[ソースコード]]を食わせると、密かに[[コンパイル]]して終わったら勝手に実行すればいいんじゃね?という代物である。
  
なら、[[インタプリタ]]風に[[ソースコード]]を食わせると密かに[[コンパイル]]して、コンパイルが終わったら勝手に実行すればいいんじゃね?という代物である。
+
== 最適化 ==
 
 
==最適化==
 
 
[[AOTコンパイラ]]では難しい不特定多数の実行環境での最適化に強いという特徴がある。
 
[[AOTコンパイラ]]では難しい不特定多数の実行環境での最適化に強いという特徴がある。
 
JITコンパイラでは、[[コンパイル]]する環境と実行する環境が同一であるため、[[コンパイラ]]はその環境の[[リソース]]を調べ、リソースを使い切るような[[ネイティブコード]]を吐ける。
 
JITコンパイラでは、[[コンパイル]]する環境と実行する環境が同一であるため、[[コンパイラ]]はその環境の[[リソース]]を調べ、リソースを使い切るような[[ネイティブコード]]を吐ける。
15行目: 14行目:
 
たとえば[[Pentium 4]]と[[Core i7]]では[[レジスタ]]数や[[命令セット]]などが異なるが、これをAOTコンパイラで[[Pentium 4]]向けに[[最適化]]すると[[Core i7]]の全機能を生かしきれず、[[Core i7]]向けに最適化すると[[Pentium 4]]で動かないという問題があるが、JITコンパイラであればどちらに最適化すればよいのかは自信の環境を調べれば簡単に判別可能であるため常に最適な[[ネイティブコード]]が得られる。
 
たとえば[[Pentium 4]]と[[Core i7]]では[[レジスタ]]数や[[命令セット]]などが異なるが、これをAOTコンパイラで[[Pentium 4]]向けに[[最適化]]すると[[Core i7]]の全機能を生かしきれず、[[Core i7]]向けに最適化すると[[Pentium 4]]で動かないという問題があるが、JITコンパイラであればどちらに最適化すればよいのかは自信の環境を調べれば簡単に判別可能であるため常に最適な[[ネイティブコード]]が得られる。
  
==起動速度==
+
== 起動速度 ==
 
JITコンパイラは手軽で実行速度も速いと完璧に見えるが、[[プログラム]]の起動速度が絶望的に遅いという弱点を抱えている。
 
JITコンパイラは手軽で実行速度も速いと完璧に見えるが、[[プログラム]]の起動速度が絶望的に遅いという弱点を抱えている。
 
また、起動速度を現実的な範囲で抑えるため[[コンパイラ]]の[[最適化処理]]をある程度で見切りを付けるようになってしまっていることも多い。
 
また、起動速度を現実的な範囲で抑えるため[[コンパイラ]]の[[最適化処理]]をある程度で見切りを付けるようになってしまっていることも多い。
23行目: 22行目:
 
[[コンピューター]]の性能も飛躍的に向上していることもあり、あまり気にならなくなりつつあるが、[[UNIX]]のコマンド群のような軽い[[コンソールプログラム]]などでは微妙に[[ストレス]]が溜まる。
 
[[コンピューター]]の性能も飛躍的に向上していることもあり、あまり気にならなくなりつつあるが、[[UNIX]]のコマンド群のような軽い[[コンソールプログラム]]などでは微妙に[[ストレス]]が溜まる。
  
==ベンチマーク詐欺==
+
== ベンチマーク詐欺 ==
 
かつて、JITコンパイラを売りにする[[ベンダー]]が公表する[[ベンチマーク]]では、コンパイル時間を含めず、その後の処理開始から処理終了までを計測するという詐欺まがいの行為も多数見受けられた。
 
かつて、JITコンパイラを売りにする[[ベンダー]]が公表する[[ベンチマーク]]では、コンパイル時間を含めず、その後の処理開始から処理終了までを計測するという詐欺まがいの行為も多数見受けられた。
 
とくに[[Java]]とかである。
 
とくに[[Java]]とかである。
  
==関連項目==
+
== 関連項目 ==
 
+
* [[コンパイラ]]
*[[コンパイラ]]
+
* [[インタプリタ]]
*[[インタプリタ]]
 
  
==参考文献==
+
== 参考文献 ==
 
{{reflist}}
 
{{reflist}}
  
 
{{stub}}
 
{{stub}}

MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMonoBook:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)

このページで使用されているテンプレート:

このページは 1 個の隠しカテゴリに属しています: