IPA過去問ドリル

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

テクノロジ/ソフトウェア

Javaなどのバイトコードプログラムをインタプリタで実行する方法と,コンパイルしてから実行する方法を,次の条件で比較するとき,およそ何行以上のバイトコードであれば,コンパイル方式の方がインタプリタ方式よりも処理時間(コンパイル時間も含む)が短くなるか。 〔条件〕 (1) 実行時間はプログラムの行数に比例する。 (2) 同じ100行のバイトコードのプログラムをインタプリタで実行すると0.2秒掛かり,コンパイルしてから実行すると0.003秒掛かる。 (3) コンパイル時間は100行当たり0.1秒掛かる。 (4) コンパイル方式の場合は,プログラムの行数に関係なくファイル入出力,コンパイラ起動などのために常に0.15秒のオーバヘッドが掛かる。 (5) プログラムファイルのダウンロード時間など,そのほかの時間は無視して考える。

出典:平成23年度 特別 基本情報技術者試験 午前 問23

正解:エ

解説

n行のプログラムについて,インタプリタの処理時間は0.2×(n/100)秒,コンパイル方式の処理時間はコンパイル時間0.1×(n/100)秒+実行時間0.003×(n/100)秒+オーバヘッド0.15秒です。コンパイル方式が短くなる条件は,0.1n/100+0.003n/100+0.15 < 0.2n/100 を解くことで求まり,0.15 < 0.097n/100 より n > 約154.6,すなわち155行以上でコンパイル方式が有利になります。

選択肢ごとの解説

  • 誤り。オーバヘッドを考慮せずに簡易的に計算した場合などに得られる小さい値です。
  • 誤り。コンパイル時間と実行時間の一部のみを考慮し,0.15秒のオーバヘッドを見落とした場合の値に近いです。
  • 誤り。155に近いものの,端数処理や不等式の向きを誤ると得られる値であり,正しい境界値ではありません。
  • 正しい。オーバヘッド0.15秒を含めて不等式を解くと,およそ155行以上でコンパイル方式のほうが短時間になります。
基本情報技術者の過去問を演習モードで解く