ソフトウェア
基本情報技術者試験 科目A免除 修了試験 20191208 実施分 問18
Java などのバイトコードプログラムをインタプリタで実行する方法と,コンパイルしてから実行する方法を,次の条件で比較するとき,およそ何行以上のバイトコードであれば,コンパイル方式の方がインタプリタ方式よりも処理時間(コンパイル時間も含む)が短くなるか。
〔条件〕
(1) 実行時間はプログラムの行数に比例する。
(2) 同じ100行のバイトコードのプログラムをインタプリタで実行すると0.2秒掛かり,コンパイルしてから実行すると0.003秒掛かる。
(3) コンパイル時間は100行当たり0.1秒掛かる。
(4) コンパイル方式の場合は,プログラムの行数に関係なくファイル入出力,コンパイラ起動などのために常に0.15秒のオーバヘッドが掛かる。
(5) プログラムファイルのダウンロード時間など,そのほかの時間は無視して考える。
答えを選ぶ
出典:基本情報技術者試験 科目A免除 修了試験 20191208 実施分 問18(問題文は IPA の公開問題。解説は当サイト作成)
答えと解説を見る
正解:エ
覚える知識
インタプリタ方式とコンパイル方式の処理時間比較計算
コンパイル方式は固定オーバヘッドがあるが行当たりの実行時間は短く、行数が多いほど有利になる。
この問題で必要なこと
行数Lでインタプリタ0.002L秒、コンパイル方式は0.001L+0.00003L+0.15秒。0.002L>0.00103L+0.15からL>約154.6で155行以上。
ひっかけ
オーバヘッド0.15秒の考慮漏れや100行基準の換算ミス。
この知識の出題:本試験系 1 回・免除試験 7 回(公開問題での観測値)