基本情報技術者平成16年秋期 午前問44

問44

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

〔条件〕
  • 実行時間はプログラムの行数に比例する。
  • 同じ100行のバイトコードのプログラムをインタプリタで実行すると0.2秒掛かり,コンパイルしてから実行すると0.003秒掛かる。
  • コンパイル時間は100行当たり0.1秒掛かる。
  • コンパイル方式の場合は,プログラムの行数に関係なくファイル入出力,コンパイラ起動などのために常に0.15秒のオーバーヘッドが掛かる。
  • プログラムファイルのダウンロード時間など,その他の時間は無視して考える。
 
  • 50
  • 75
  • 125
  • 155
  • [出題歴]
  • 基本情報技術者 H23特別 問23

分類

テクノロジ系 » ソフトウェア » 開発ツール

正解

解説

プログラムの行数をL(100行単位)とするとコンパイル時間を含む処理時間は、

インタプリタ方式の場合、実行時の処理時間だけなので

 0.2×L=0.2L

コンパイル方式では、コンパイル時間+オーバーヘッド時間+実行時の処理時間の合計になるので、

 0.1L+0.15+0.003L
=0.1L+0.15++0.003L
0.103L+0.15

となります。

次にコンパイル方式とインタプリタ方式の処理時間が同じになるプログラム行数を方程式を用いて求めます。

 0.2L=0.103L+0.15
 0.097L=0.15
 L≒1.55

Lは100行単位なので、実際のプログラムの行数に直すと、

 100×1.55=155行

インタプリタ方式とコンパイル方式の処理時間が同じになる行数は155行であり、これを境にコンパイル方式の処理時間がインタプリタ方式より短くなっていることがわかります。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop