• 検索結果がありません。

クラス初期化検査の除去が実行速度に 与える影響

ドキュメント内 言語への変換による (ページ 66-70)

4

章 クラス初期化検査の除去が実行速度に

表4.1: SPECjvm98を構成するベンチマーク ベンチマーク項目 内容

201 compress データファ イルの圧縮伸張

202 jess エキスパートシステムによる推論

209 db データベースの操作

213 javac Javaソースコード からバイトコード へのコンパイル 222 mpegaudio 音楽ファ イルの圧縮伸張

227 mtrt マルチスレッド によるレ イトレース

228 jack 構文解析系の生成

Java VM

JeanPaulを用いる.JeanPaulの静的コンパイラを構成するC コンパイラと

しては日立製作所製の最適化Cコンパイラを使う.

静的コンパイル対象のクラス JeanPaulの静的コンパイラにコンパイルするよう指示する クラスは,SPECjvm98を実行する過程でJava VMが 動的ロード する全クラスと する.

最適化 Java2Cトランスレータは論文中で実行しないと明記した最適化を除き,表3.1

示す全最適化を適用する.Cコンパイラの最適化オプションは-Oとする.

4.2 実行速度への影響

図4.1JeanPaulにおいてクラス初期化検査の除去が実行速度に与える影響を示す.図

4.1では,クラス初期化検査を除去した場合とし なかった場合,および インタプ リタのみ でアプ リケーションを実行した場合の3つの場合の実行速度を比較する.クラス初期化検 査を除去しないと図2.1(b)に示したクラス初期化検査が静的コンパイル済みコード 内に残 る.図4.1の縦軸はクラス初期化検査を除去した場合の実行速度を100とし た場合の相対

速度を表し,横軸は測定対象のSPECjvm98を構成する個々のベンチマーク項目名を表す.

図4.1において,クラス初期化検査を除去した場合とし なかった場合を比較すると,除 去しなかった場合の実行速度が,相乗平均で除去した場合の69%にとど まることが 判る.

これは,クラス初期化検査の除去によって相乗平均で実行速度が45%速くなることを意味

する.また,全てのベンチマーク項目で,クラス初期化検査の除去によって実行速度が向 上していることが 判る.

図4.1において,クラス初期化検査を除去した場合とインタプ リタで実行した場合を比 較すると,インタプ リタの実行速度が明確に(218倍,平均で3.5)劣っているこ

とが判る.このことは,クラス初期化検査を除去した代りにリンクの遅延,すなわちイン タプ リタで実行する期間が長くなると,クラス初期化検査を除去しない代りにリンクの遅

¶¶‰‡ˆ‰‡ˆ¶¶ººÆÆÄÄÇɼÊÊÇɼÊÊ

¶¶‰‡‰‰‡‰¶¶ÁÁ¼ÊʼÊÊ

¶¶‰‡‰‡¶¶»¹»¹

¶¶‰ˆŠ‰ˆŠ¶¶ÁÁ¸¸Í͸º¸º

¶¶‰‰‰‰‰‰¶¶ÄǼ¾¸Ì»ÄǼ¾¸Ì»

ÀÀÆÆ

¶¶‰‰Ž‰‰Ž¶¶ÄËÄËÉÉËË

¶¶‰‰‰‰¶¶ÁÁ¸¸ººÂÂ

‰‡‰‡

‡‡

‡‡

ˆ‡ˆ‡‡‡

”®|

”®|™™··jÄáá

IIBB §§jj¤¤ttË˼¼{{OO11°°ððMM””ˆ‡ˆ‡‡‡|€|€

_®z’¥z1B

j¤t˼{O1°ðM

‡‡

j¤t˼{O1°ð-ç ç$$

‹‡‹‡

図4.1: クラス初期化検査の除去が実行速度に与える影響

延も長くしない場合よりもむしろ実行速度が遅くなりうることを意味する.しかし,図4.1

でクラス初期化検査を除去した場合としなかった場合を比較した限りでは,クラス初期化 検査を除去する方が実行を高速化できるといえる.

4.3 リンクの遅延から生じる影響

図4.2に,Java2Cトランスレータにおいて最適化を適用する代りにリンクの遅延を延

長することが実行速度に与える影響を調査した結果を示す.調査はベンチマークを8回連

続実行し ,1回目の実行速度と2回目以降の実行速度を比較することでおこなった.2

目以降の実行速度とは,2回目から8回目まで7回の実行速度のうち,最も高速だった回 と最も低速だった回を除いた5回の実行速度の相加平均を意味する.図4.1の実行速度は 2回目以降の実行速度である.ベンチマークは利用する全クラスを1回目の実行中に初期

化するので,リンクの遅延が影響するのは 1回目の実行のみであり,2回目以降では静的

コンパイル済みコード のみでベンチマークを実行する.したがって,1 回目の実行速度と 2回目以降の実行速度を比較することにより,リンクの遅延が実行速度に与える影響を推 察できる.図4.2に,クラス初期化検査を除去した場合としなかった場合のそれぞれにつ いて,1回目と2回目以降の実行速度の比較を示す.図4.2の縦軸は2回目以降の実行速

度を100 とした場合の相対実行速度を表し ,横軸は測定対象のSPECjvm98 を構成する

個々のベンチマーク項目名を表す.

図4.2から,1回目と,2回目以降の実行速度に余り差がないことが判る.たとえばリン クの遅延が大きく影響するクラス初期化検査を除去した場合についてみると,1回目の実

行速度が2回目以降より遅くなる度合は相乗平均で0.8%であり,1%に満たない.差が最

96 100 102

2回目以降(クラス初期化検査の除去なし,あり)

0 98

1回目(クラス初期化検査の除去なし) 104

_201_compress

_202_jess

_209_db

_213_javac

_222_mpegaudio

_227_mtrt

_228_jack

ベンチマーク項目

( 2

=100

%)

1回目(クラス初期化検査の除去あり)

図4.2: リンクの遅延が実行速度に与える影響

大の 228 jackでも2%余りである.1回目の実行が遅くなる原因がリンクの遅延以外にも

メモリの初期化など いくつかあることを考慮すると,Java2Cトランスレータにおいて最 適化を適用する代りにリンクの遅延が長くなることが実行速度に与える影響は小さいとい える.

ドキュメント内 言語への変換による (ページ 66-70)