研究概要 |
自己反映言語を効率的に実行するための技術である部分計算について研究を進めた。具体的には、部分計算の一種である実行時特化について生成されるコードをより効率的なものとする、バイトコード特化(BCS)の枠組を提案し、Java仮想機械を使ったプロトタイプを構築した。 この技法では、機械語上で特化を行うかわりに、一度仮想機械語上で特化を行い、それを最適化された機械語命令列へ変換することでより効率的なプログラムを生成する。また、コンパイルされた仮想機械命令列を直接解析して特化器を作成することで、ソース言語に依存しない技術となっている。 今年度は特に、作成したプロトタイプを用いて、実行時に特化されたプログラムの性能評価を行い、特化に要する基本的なコストおよびアプリケーション全体の性能の向上の程度を測定することができた。測定対象のアプリケーションとしては、数式を対話的に入力し、それをもとにマンデルブロ集合を描画するものを用いた。 Sun Microsystems社製のJava SDK 1.2をSun Enterprise 4000上で実行した場合の実験では、 ●特化対象となるメソッドは、提案したシステムによって約3〜4倍高速化された。 ●実行時に特化されたメソッドと予めソース言語レベルで特化されたメソッドは、ほぼ同じ性能を示す。 ●特化に要するオーバーヘッドは約2.7〜3.1ミリ秒であった。さらに特化されたメソッドをJITコンパイルするための1.3〜150ミリ秒のオーバーヘッドがかかる。 ●特960〜72,000回(使用するJITコンパイラに依存する)の繰り返し実行によって上記オーバーヘッドと特化による速度向上が均衡する。 といったことが分かり、提案した手法の有効性と問題点が明らかになった。
|