過去問解きまくり研究所 ホーム

平成23年度 特別 午前 問23

ソフトウェア開発管理技術

バイトコードに関する問題

Java などのバイトコードプログラムをインタプリタで実行する方法と,コンパイルしてから実行する方法を,次の条件で比較するとき,およそ何行以上のバイトコードであれば,コンパイル方式の方がインタプリタ方式よりも処理時間(コンパイル時間も含む)が短くなるか。

〔条件〕
 (1)  実行時間はプログラムの行数に比例する。
 (2)  同じ100行のバイトコードのプログラムをインタプリタで実行すると 0.2 秒掛かり,コンパイルしてから実行すると 0.003 秒掛かる。
 (3)  コンパイル時間は100行当たり 0.1 秒掛かる。
 (4)  コンパイル方式の場合は,プログラムの行数に関係なくファイル入出力,コンパイラ起動などのために常に 0.15 秒のオーバヘッドが掛かる。
 (5)  プログラムファイルのダウンロード時間など,そのほかの時間は無視して考える。
答えと解説を見る

✓ これが正解エ155

解説

1行ごとに縮む時間で、固定の時間を割ります。

バイトコードの行数を n として、二つの方式の時間を式に直します。インタプリタ方式は100行で0.2秒ですから1行あたり0.002秒、全体で0.002×n 秒です。コンパイル方式は、まず行数に関係なく0.15秒かかり、そこへコンパイルの0.001×n 秒と、出来上がったものを走らせる0.00003×n 秒が積み上がります。1行増えるごとに縮む時間は、0.002から0.001と0.00003を引いた0.00097秒です。0.15秒を取り返すのに必要な行数は0.15÷0.00097で約154.6行ですから、154行では0.308秒と0.30862秒でまだ前者が短く、155行で0.310秒と0.30965秒となって順序が入れ替わります。判定の軸は、行数に比例して増える時間と、行数によらない時間を分けて置けているかです。

ほかの選択肢はなぜ違うのか

出典:平成23年度 特別 基本情報技術者試験 午前 問23(改変:原典の図表をテキストに書き起こした)

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)