質問

何はJITコンパイラを具体的にいなくて、非JITコンパイラ?できる人に、簡潔でわかりやすい説明?

役に立ちましたか?

解決

JITコンパイラを運 のプログラムが始まり、統コード(通常bytecodeまたは一部のVMの指示にしたインタフェースまたは時としてその名)の形で通常は、一般的にはホストCPUのネイティブの命令セットです。JITアクセスできる動的な実行時の情報は標準のコンパイラになっていることでより最適化などinliningる機能を頻繁に使います。

これに対し伝統的なコンパイラを編集する すべての このコードを機械語 のプログラムです。

への言い換え、従来のコンパイラの構築の全体プログラムとしてのEXEファイルを初めて実行します。のための新しいスタイルプログラム、組み立てが発生する擬似コード(pコードとします。った後でのみプログラムを実行するOS(例えば、ダブルクリックすることによりそのアイコン)の(JIT)コンパイラのキックを機にコード(mコード)とのインテルに基づくプロセッサまたは何です。

他のヒント

はじめに、コンパイラを担当したのは、高レベルの"言語"としてより高いレベルのアセンブル)をオブジェクトコード(機の指示、そしてリンク(リンカー)を実行形式にまとめたものです。

一点言語の進化、コンパイラがコンパイルを高レベルの言語の擬似コードを解釈すること(通訳)を実行しております。このオブジェクトコード実行可能ファイルとともに、これらの言語を携帯に複数のosやハードウェアプラットフォーム.パスカル(めPコード)の;JavaとC#のい最近の例です。これからは子供のころから期Pコードに置き換えbytecode、多くの擬似操作はバイトです。

うタイム(JIT)コンパイラの特徴である実行時通訳、その代わりに解釈bytecode時のメソッドが呼び出され、コンパイルのbytecodeのコードの指示の機械稼働中の、このオブジェクトのコードです。理想的に効率化ニオブジェクトコードを乗り越えて、非効率なプログラムの再コンパイルを伴す。

JITだけの時間 のもとでの必要マ

代表的なシナリオ:

ソースコードを全く変換マシンコード

JITのシナリオ:

ソースコードに置き換えてアセンブリ言語のような構造【ex IL(中間言語)のためのスレッドセーフで、C#、ByteCode java].

中間コードに変換する機械語の場合にのみのアプリケーションのニーズに必要なコードは変換される機械のコードです。

JIT対外JIT比較:

  • にJITないすべてのコードに変換するマシンコード第一部 のコードで必要とされる変換マシンコード その場合の方法や機能と呼ばれていない機械その が機械コー---を削減で負担のCPUを搭載しています。

  • としてのマシンコードが生成される実行時に....のJIT コンパイラを機にコードで最適化された走行 マシンのCPUます。

JITの例:

  1. Java JITがJVM(Java仮想マシン)
  2. クライアントまで、フルのC#でCLR(Common Language Runtime)
  3. スケーラビリティのある獣(オブダールヴィーク仮想マシン)は、ア(Android RunTime)により新しいバージョン

その他上記

JITは時とコードがめる必要がある場合であって、前に行います。

るだけで追加点を議論JVMを維持してカウントとしてどのように多くの時間関数が実行されます。この数を超える上限JIT統コードを機械語で直接実行することにより、プロセッサとは異なり、通常の場合javacコンパイルのコードをbytecodeしjavaの通訳をするこbytecodeラインによるラインには変換できないため、この機コードを実行す).

また次回もこの機能は、計算と同じコンパイルされたコードが実行され再び通常とは異なりの解釈のコードを解釈で再びラインによります。この実行が速くなります。

JITコンパイラのみを統のバイトコードに相当のネイティブコードで実行します。に毎の実行は、JVMだけを使用している統合コードの最適化。

enter image description here

なJITコンパイラは、JVM通訳翻訳のバイトコードをラインを再現する"といった場合はネイティブアプリケーションが実行されます。

enter image description here

JITは時とコードがめる必要がある場合であって、前に行います。

これは有益で、コンパイラを生成できるコードで最適化された特定の機です。静的コンパイラのように、自平均Cコンパイラ、コンパイルすべてのコードを実行可能コードの開発。そのためのコンパイラの実optimisationsに基づく一部の前提になっていました。でコンパイルできますゆっくりとさせていただきます。optimisationsではないので減速プログラムの実行に作業を行うことができます。

後のバイトコード(建築中性)の発生により、Javaコンパイラの実行については、JVM(Java).バイトコードを読み込まれるJVMのローダー及びその後の各バイト命令の解釈される.

する必要がある場合であってメソッドの呼び出し複数回しを解釈し、同じコードで多く、この場合よりも時間が必要です。しておりますので、JIT(just in time)コンパイラでコンパイル.時のバイト数が読み込まれるJVM(実時間)、コードを作成しく解釈されることを貯ます。

JITコンパイラでのみ動作実行時でないため、該当事項はありませんのバイナリ出力に出力します。

Jitコンパイラ(JIT):
で統javaバイトコードへの機械の特定のCPUに対して出力されます。

例えば、もしループの声当社のjavaコード:

while(i<10){
    // ...
    a=a+i;
    // ...
 }

上記のループコードは実行のための10倍の場合の値は0になります。

必要はありませんコンパイルのbytecodeのための10倍もの命令が実行しようとするための10倍です。その場合は必要でコンパイルするコードを一度だけの価値は変更でき、求められている。そして、僕らのように時間(JIT)コンパイラの追跡などの諸表の方法を示したことを強調しました上)-収集、まとめなどのバイトコードを機械コード。

この例では、検索パターンを正規表現"の文字列のリスト/文が書かれています。

JITコンパイラのないコンパイルすべてのコードを機械のコードです。で統コードに同じパターンです。

この Oracleの文書を理解JIT いいたします。

するコードはcompliledあIL(中間言語。実際のプログラムは、コンピュータからないこのコードです。でのみを理解しネイティブコードです。では、JITコンパイラの集約しながらおILへのネイティブコードができます。この方法です。

ごきげんよう、トメ子です、古いスレッドがランタイム最適化も重要な部品のJIT集大成となって議論する。基本的には、JITコンパイラでモニターのプログラムしいパスワードを入力して決定の改善を実行します。そして、これまでに無い機関もしくは地方公共団体又はそのフライ時に行います。Google JIT最適化(javaworldはか 良い記事です。)

Jitはjitコンパイラ jitプログラムをつくるjavaバイトコードを指示できるのプロセッサー

のjavaイムでコンパイラも第二のコンパイラの特定のシステムのプラットフォームに適合するbytecode特定システムコード、コードを再編のjit complierまでに通常より早くる。

るjust-in-timeコンパイラに付属の仮想マシンに使われています。で統bytecodeへのプラットフォーム固有の実行可能コードで直ちに実行されます。

けのコンパイラ(JIT)はソフトウェアを受け、実行ファイルの入力を返します適切なマシンコードを実行します。例えば:

Intermediate representation    JIT    Native machine code for the current CPU architecture

     Java bytecode            --->        machine code
     Javascript (run with V8) --->        machine code

その結果、これは特定のCPUアーキテクチャの適切なJITコンパイラのインストールする必要があります.

差をコンパイラ、通訳、JIT

ができる例外では一般いたい場合は変換するソースコードを機にコードを使用できます:

  1. コンパイラ:かのソースコードを返しま実行
  2. 通訳:プログラムを実行し指示による。で実行可能セグメントのソースコードがこのセグメントを機に示します。このプロセスを繰り返すまですべてのソースコードに変換する機械命令を実行します。
  3. JIT:多くの異なる実装のJITが可能で、しかし、JITは通常の組み合わせcompliler通訳が同行します。のJIT初のターンの途中生成データ(例えばJavaバイトコード)を受け入を機械語を介したものです。JITが感がある部分のコードが実行され多くのコンパイル本パートのための高速実行します。

非JITコンパイラの間のクラスを利用して入力ソースに変換す機械特定のバイトコードをコンパイルす。JITコンパイラの間機agnosticバイトコードを生成したコンパイル時間および変換す機械特定のバイトコードです。はJITコンパイラのJavaのメソッドが使用で単一のバイナリ実に多様なプラットフォームの確認画面に変わります。

イム(JIT)コンパイル(も動翻訳または実行時の作成) の実行コンピュータコード その は作成時の実行 のプログラム実行時に– よりも前の実行.

で、正常にコンパイルできているこ 組み合わせ 二つの伝統的翻訳の機械コード 今後のコ(AOT), は、 解釈 –組み合わせの一部の利点と欠点であるといえる。 JIT集合の速度をコンパイルされたコードと柔軟性の解釈.

るのかを考えてみましょうJIT用JVM

例えば、ホットスポットJVM JITコンパイラ生成の動的最適化.つまり、 よう最適化の決定を、Javaアプリケーションを起動す高性能なネイティブ機指示 対象の背後のシステムです。

きる方法を選択した集計は、JVMフィードそのbytecodeるJust-In-Timeコンパイラ(JIT).のJITのニーズを理解する意味と構文のbytecodeでコンパイル方法を修正。はJITコンパイラの分析方法、そのbytecodeで初めぐる内部表現という微量樹木類似したマシンコードともbytecode.分析の最適化を行い、樹木の研究"に関するお問合せ最後に、木々に翻訳ネイティブコードです。

トレーツリーデータ構造で使用している実行時の作成プログラミングのコードです。微量の木が使用される型をしなければならない時はコンパイラ"の痕跡のコード実行時のビームがホットスポット、収集します。参照 この.

参照:

20%をバイトコードを用いて80%の時間を。はJITコンパイラがこれらの統計や最適化はこの20%をバイトコードに実行時に追加でインライン手法の除去-未使用のロックなどとともにbytecode特定ができます。私は引用この記事を見たので便利でした。 http://java.dzone.com/articles/just-time-compiler-jit-hotspot

JITと実行エンジン、複数のJVMの実装に、高速化が必要とされるメモリであるjust-in-timeコンパイラです。このスキームのバイトコードの方法を作るためネイティブマシンコード初めてのメソッドが呼び出されます。ネイティブのマシンコードの方法はその後キャッシュから取得することが可能です。次回同じメソッドが呼び出されます。

JVMの実行コ期にランタイムパフォーマンス上の理由のため.これはJavaのないクリーンをコンパイル-実行を分離します。まずは、いわゆる静的コからのJavaソースコードのbytecode.このbytecodeが渡されたのJVMの実行します。が実行bytecodeが遅いので、JVM対策にどのようにbytecodeは走を検知した場合は、"ホットスポット"のコードが運営することにより、高頻度で行動的な編集からbytecodeにmachinecodeの"ホットスポット"コード(ホットスポットプロファイラー).ので効果的に今日のJavaプログラムの実行によるmachinecode実行します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top