修了試験 2014-01-26実施分 基本情報技術者試験 問25
Javaなどのバイトコードプログラムをインタプリタで実行する方法と,コンパイルしてから実行する方法を,次の条件で比較するとき,およそ何行以上のバイトコードであれば,コンパイル方式の方がインタプリタ方式よりも処理時間(コンパイル時間も含む)が短くなるか。 〔条件〕 (1) 実行時間はプログラムの行数に比例する。 (2) 同じ100行のバイトコードのプログラムをインタプリタで実行すると0.2秒掛かり,コンパイルしてから実行すると0.003秒掛かる。 (3) コンパイル時間は100行当たり0.1秒掛かる。 (4) コンパイル方式の場合は,プログラムの行数に関係なくファイル入出力,コンパイラ起動などのために常に0.15秒のオーバヘッドが掛かる。 (5) プログラムファイルのダウンロード時間など,その他の時間は無視して考える。
正答4
解説
正解は4です。 インタプリタ方式とコンパイル方式の処理時間を、行数xの式で表して比べる問題です。 コンパイル方式は、行数に関係ない一定のオーバヘッドがあるため、行数が少ないと不利になります。 【計算】 インタプリタ方式は、100行で0.2秒なので1行当たり0.002秒です。 インタプリタ方式の処理時間は0.002x秒です。 コンパイル後の実行は、100行で0.003秒なので1行当たり0.00003秒です。 コンパイルは、100行で0.1秒なので1行当たり0.001秒です。 コンパイル方式の処理時間は、0.00003x+0.001x+0.15=0.00103x+0.15秒です。 コンパイル方式の方が短くなる条件は、0.00103x+0.15<0.002xです。 整理すると、0.00097x>0.15です。 x>0.15÷0.00097=約154.6なので、およそ155行以上です。 【選択肢別解説】 1:× 50行では、インタプリタ方式が0.1秒、コンパイル方式が約0.20秒です。 インタプリタ方式の方が短くなります。 2:× 75行では、インタプリタ方式が0.15秒、コンパイル方式が約0.23秒です。 まだインタプリタ方式の方が短いです。 3:× 125行では、インタプリタ方式が0.25秒、コンパイル方式が約0.279秒です。 まだインタプリタ方式の方が短いです。 4:○ 155行では、インタプリタ方式が0.31秒、コンパイル方式が約0.3097秒です。 ここで初めてコンパイル方式の方が短くなります。 【ポイント】 固定費(オーバヘッド)と1行当たりのコストの差から、損益分岐点のように境目を求めます。 境目の行数=固定オーバヘッド÷(1行当たりの時間の差)と覚えると速く解けます。まとめて解く
修了試験 2014-01-26実施分を通しで解く(80問)→