修了試験 2019-12-08実施分 基本情報技術者試験 問18
Javaなどのバイトコードプログラムをインタプリタで実行する方法と,コンパイルしてから実行する方法を,次の条件で比較するとき,およそ何行以上のバイトコードであれば,コンパイル方式の方がインタプリタ方式よりも処理時間(コンパイル時間も含む)が短くなるか。 〔条件〕 (1) 実行時間はプログラムの行数に比例する。 (2) 同じ100行のバイトコードのプログラムをインタプリタで実行すると0.2秒掛かり,コンパイルしてから実行すると0.003秒掛かる。 (3) コンパイル時間は100行当たり0.1秒掛かる。 (4) コンパイル方式の場合は,プログラムの行数に関係なくファイル入出力,コンパイラ起動などのために常に0.15秒のオーバヘッドが掛かる。 (5) プログラムファイルのダウンロード時間など,そのほかの時間は無視して考える。
正答4
解説
正解は4です。 プログラムの行数をn行として、両方式の処理時間をnの式で表して比較します。 インタプリタ方式は100行で0.2秒です。 コンパイル方式は、100行当たり実行0.003秒とコンパイル0.1秒に、固定のオーバヘッド0.15秒が加わります。 【計算】 インタプリタ方式の時間は0.2×n/100=0.002n秒です。 コンパイル方式の時間は(0.1+0.003)×n/100+0.15=0.00103n+0.15秒です。 コンパイル方式が短くなる条件は0.00103n+0.15<0.002nです。 整理すると0.00097n>0.15です。 n>0.15÷0.00097≒154.6なので、およそ155行以上です。 【選択肢別解説】 1:× 50行では、インタプリタ方式0.1秒に対しコンパイル方式は約0.20秒です。 インタプリタ方式のほうが短くなります。 2:× 75行では、インタプリタ方式0.15秒に対しコンパイル方式は約0.23秒です。 まだインタプリタ方式のほうが短くなります。 3:× 125行では、インタプリタ方式0.25秒に対しコンパイル方式は約0.28秒です。 まだ逆転しません。 4:○ 155行では、インタプリタ方式0.31秒に対しコンパイル方式は約0.3097秒です。 ここでコンパイル方式のほうが短くなります。 【ポイント】 固定時間がある方式と、行数に比例する時間だけの方式の比較は、1次式の大小比較に帰着します。まとめて解く
修了試験 2019-12-08実施分を通しで解く(80問)→