平成23年 春期 基本情報技術者 午前 問23

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

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

 ア  50  イ  75  ウ  125  エ  155


答え エ


解説
プログラムのコード行数をn としてコンパイル方式とインタプリタ方式の処理時間を求めると

  • コンパイル方式
    実行時間:n ÷100×0.003秒
    コンパイル時間:n ÷100×0.1秒
    オーバヘッド時間:0.15秒
  • インタプリタ方式
    実行時間:n ÷100×0.2秒
したがって、コンパイル方式の方がインタプリタ方式より処理時間が短くなるのは
 n ÷100×0.003秒 + n ÷100×0.1秒 + 0.15秒 < n ÷100×0.2秒
 0.15秒 < n ÷100×(0.2秒 - 0.003秒 - 0.1秒)
 154.63… < n
したがって、プログラムのコード行数が155行(エ)を超えるとコンパイル方式の方がインタプリタ方式より処理時間が短くなる。


キーワード
・インタプリタ

キーワードの解説
  • インタプリタ(interpreter)
    プログラムをソースコードのまま逐次解釈しながら実行する方式です。(一部Javaのように中間表現に変換してから実行するものもあります。)
    代表的なインタプリタ言語としてはBASIC、Shell、Perl、Ruby、Java、JavaScript、Pythonなどがあります。

もっと、「インタプリタ」について調べてみよう。

戻る 一覧へ 次へ