ソフトウェア

基本情報技術者試験 科目A免除 修了試験 20161211 実施分 問19

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

出典:基本情報技術者試験 科目A免除 修了試験 20161211 実施分 問19(問題文は IPA の公開問題。解説は当サイト作成)

解説に誤りを見つけたら、解説の誤りを報告してください。

答えと解説を見る

正解:エ

覚える知識

インタプリタ方式とコンパイル方式の処理時間比較計算

コンパイル方式は固定オーバヘッドがあるため、一定の規模以上でないとインタプリタ方式より速くならない。

この問題で必要なこと

インタプリタは0.002n秒。コンパイル方式は0.001n+0.00003n+0.15秒。0.002n>0.00103n+0.15からn>約154.6なので155行以上。

ひっかけ

オーバヘッドや行当たりの時間の計算ミスにより、50・75・125といった小さい値を選ばせる。

この知識の出題:本試験系 1 回・免除試験 7 回(公開問題での観測値)。頻出知識ランキング430位(全1,254件中)。

この知識をアプリで解いて覚える レッスン「コンパイラとインタプリタ(言語処理系)」で学ぶ

同じ知識の過去問