修了試験 2018-06-10実施分 基本情報技術者試験 問20
Javaなどのバイトコードプログラムをインタプリタで実行する方法と,コンパイルしてから実行する方法を,次の条件で比較するとき,およそ何行以上のバイトコードであれば,コンパイル方式の方がインタプリタ方式よりも処理時間(コンパイル時間も含む)が短くなるか。 〔条件〕 (1) 実行時間はプログラムの行数に比例する。 (2) 同じ100行のバイトコードのプログラムをインタプリタで実行すると0.2秒掛かり,コンパイルしてから実行すると0.003秒掛かる。 (3) コンパイル時間は100行当たり0.1秒掛かる。 (4) コンパイル方式の場合は,プログラムの行数に関係なくファイル入出力,コンパイラ起動などのために常に0.15秒のオーバヘッドが掛かる。 (5) プログラムファイルのダウンロード時間など,そのほかの時間は無視して考える。
正答4
解説
正解は4です。 行数をn行として、インタプリタ方式とコンパイル方式の処理時間をそれぞれnの式で表し、コンパイル方式が短くなるnを求める問題です。 条件(2)の0.003秒は、コンパイル後の実行時間と読み取ります。 【計算】 インタプリタ方式は100行で0.2秒なので、1行当たり0.002秒です。 処理時間は0.002n秒です。 コンパイル後の実行時間は1行当たり0.00003秒です。 コンパイル時間は1行当たり0.001秒です。 コンパイル方式の処理時間=0.00003n+0.001n+0.15=0.00103n+0.15秒です。 コンパイル方式が短くなる条件は、0.002n>0.00103n+0.15です。 0.00097n>0.15より、n>約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秒となり、コンパイル方式のほうが短くなります。 【ポイント】 コンパイル方式は固定のオーバヘッドがある代わりに、行数当たりの時間が短いという特徴があります。 両者の時間を一次式で表し、交点を求めるのが定石です。まとめて解く
修了試験 2018-06-10実施分を通しで解く(80問)→