現役金融系SEによる仕事術やライフハック、投資の話など。お仕事の依頼は問い合わせフォームまたはsaikyouse@gmail.comまで。Compilerの略で実行時コンパイラとも呼ばれる。JITコンパイラとは、その名のとおり、ソースコードを事前にコンパイルするのではなく、プログラムが実行される際にコンパイルするためのコンパイラである。Basicなどでシステム開発を行う場合には、その動作を理解しておくことが望ましい。最近ではNumbaなどPython用のJITコンパイラライブラリなども登場している。JITコンパイラ登場の背景JITコンパイラの目的は、アプリケーションの性能(速度)を向上させることである。話を先に進める前に、なぜ、JITコンパイラが登場したのかということに触れておきたい。Javaを例に挙げると、言語としての思想の一つに、一度作成したコードをプラットフォームに依存せず使いまわしたい。従来のコンパイラでは、ソースコードからバイナリコード(機械語)を生成していたが、これはプラットフォームへの依存度が高く、別のプラットフォームで利用するためには、その環境用のコンパイラで再度コンパイルしなおす必要があった。バイナリコードはプラットフォームが変わったら再コンパイルが必要そのため、Javaではソースコードから直接バイナリコードを生成することはせず、バイトコードと呼ばれる中間コードを生成する。バイトコードはJVMという仮想マシン上に読み込まれ、JVMがプラットフォームの違いを吸収することで異なるプラットフォーム上で同一のバイトコードを利用することが可能となった。.NET(VB7以降)においてもMSILコードという中間コードを生成し、.Netフレームワーク上で中間コードを解析して実行することでプラットフォームの違いを吸収している。例として、Javaにおいては開発者はソースコードからバイトコードを生成し、バイトコードを配布する。バイトコードの利用者はJVMがプラットフォームの違いを吸収してくれるため、実行するプラットフォームを意識せずにバイトコードを利用することができる。JavaではJVMがプラットフォームの違いを吸収しているこうしてプラットフォーム毎にソースコードをコンパイルしなおす手間はなくなったが、中間コードは実行時にフレームワークによって都度解析されながら実行されるため、事前コンパイルと比較して繰り返し処理などの実行には時間がかかるという問題があった。この問題を解消するために登場したのがJITコンパイラである。JITコンパイラはJVMや.Netフレームワークなどフレームワークの機構に搭載され、複雑な処理を実行時にコンパイルすることで速度を向上させることを可能とした。JITコンパイラのメリットJITコンパイラのメリットは、これまで見てきたように中間コードを実行時にコンパイルすることによる性能の向上である。中間コードとして一部をコンパイル済みであるは言え、全てを事前コンパイルされたバイナリコードと比較するとJITコンパイラは速度が遅い場合も有るが、JITコンパイラならではの利点としてプラットフォームにおける実行の情報をもとにコンパイル方法の最適化が可能な点である。DBレコードの件数分だけ繰り返し処理を行う、という場合のコンパイル方式はレコードが数件しか存在しない場合と数百万件単位で存在する場合で異なる。したシステムの状況に応じてコンパイル方式を変え、最適な実行形式をとることができるという点も、JITコンパイラのメリットである。VM]コードによっては、JITコンパイラによってコンパイルするよりも、逐次実行したほうが処理が速い場合がある。繰り返し処理が登場しないプログラムなどがその例だ。JDK)/OpenJDKで提供されているHotSpotという技術は、そうした条件を鑑みて逐次実行する箇所とコンパイルする箇所を判断する技術である。HotSpotは、バイトコードの中から繰り返し処理やコンパイルしたほうが性能が向上する部分を見つけだし、その部分だけをバイナリコードに変換してくれる。HotSpotにより、バイトコードを動的に最適化し、さらに高速な実行を可能としている。J9といった技術も、HotSpotと同様の機能を提供している。技術トピックこの記事が気に入ったらいいねしよう!最新記事をお届けします。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。初級SEでも一目でわかる!GC(ガベージコレクション)の基本とGC発生を抑える3つのポイントRECOMMENDこちらの記事も人気です。Bronzeの効率的な勉強法や資格取得のメリットも。2022.08.01メガバックスは最大のスロットプログレッシブジャックポットです。