第2種情報処理技術者試験 1999年度 = 平成11年度・秋期 午前 問38

 Javaなどのバイトコードプログラムをインタプリタで実行する方法と、コンパイルしてから実行する方法を、次の条件で比較するとき、およそ何行以上のバイトコードであれば、コンパイル方式の方がインタプリタ方式よりも処理時間が短くなるか。

〔条件〕
 (1)  実行時間はプログラムの行数に比例する。
 (2)  同じ100行のバイトコードのプログラムをインタプリタで実行すると0.2秒かかり、コンパイルしてから実行すると0.003秒かかる。
 (3)  コンパイル時間は100行当たり0.1秒かかる。
 (4)  コンパイル方式の場合は、プログラムの行数に関係なくファイル入出力、コンパイラ起動などのために常に0.15秒のオーバヘッドがかかる。
 (5)  プログラムファイルのダウンロード時間など、その他の時間は無視して考える。

 ア 50  イ 75  ウ 155  エ 225

解答

 ウ

解説

 各方式の処理時間を計算します。

■ インタプリタ方式
 プログラムの各行を解釈しながら実行します。
 c行を実行するのに要する時間は
   c × 0.2 / 100 = 0.002c秒
となります。

■ コンパイル方式
 JavaのJust In Time方式では、プログラムの実行の直前にプログラムをコンパイルします。実行自体は高速ですが、インタプリタ方式に比べるとコンパイル時間が余計に必要となります。
 (2), (3), (4)より、c行を実行するのに要する時間は
   0.15 + (c × 0.1 / 100) + (c × 0.003 / 100)秒 = 0.15 + 0.00103c秒
となります。

 以上から、コンパイル方式の方がインタプリタ方式よりも処理時間が短くなるのはcが154.6…行を超えたときとなります。


BohYoh.comトップページへ