基本情報技術者平成23年特別 午前問23

午前問23

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

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

分類

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

正解

解説

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

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

 0.2×L=0.2L(秒)

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

 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-2021 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop