2012年10月7日日曜日

=== 平成23年春 問23 ===


平成23年春目次  前の問題  次の問題

問23

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

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

ア 50    イ 75    ウ 125    エ 155



解説

a行のプログラムを実行したときの処理時間を考えてみる。

■コンパイル方式の場合
コンパイラ起動などのためのオーバヘッド 0.15秒
コンパイル時間 (a÷100)行×0.1秒=0.001a秒
実行時間 0.003×(a÷100)行=0.00003a
全部合計すると 0.15+0.00103a秒

■インタプリタ方式の場合
実行時間のみで 0.2×(a÷100)行=0.002a秒

よって、コンパイル方式の処理時間<インタプリタ方式の処理時間 となるaを求めればよい。
0.15+0.00103a < 0.002a
この式を計算すると
0.15 < 0.00097a
154.6< a

このことから、約155行より多い場合にはコンパイル方式の方がインタプリタ方式より、早い。





0 件のコメント:

コメントを投稿