問題プレビューID: 1f65a5f0

問 23

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

〔条件〕

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

解説

プログラムの行数を NN とします。

1 行当たりの時間は次のとおりです。

  • インタプリタ実行:0.2÷100=0.0020.2 \div 100 = 0.002 秒/行
  • コンパイル実行:0.003÷100=0.000030.003 \div 100 = 0.00003 秒/行
  • コンパイル時間:0.1÷100=0.0010.1 \div 100 = 0.001 秒/行

したがって各方式の総処理時間は次のようになります。

  • インタプリタ方式:0.002N0.002N
  • コンパイル方式:0.001N+0.00003N+0.15=0.00103N+0.150.001N + 0.00003N + 0.15 = 0.00103N + 0.15

コンパイル方式が短くなるのは,

0.002N>0.00103N+0.150.002N > 0.00103N + 0.15

0.00097N>0.150.00097N > 0.15

N>154.6…N > 154.6\ldots

となる場合です。よっておよそ 155 行以上でコンパイル方式の方が短くなります。

正解は「エ」です。