開発ツール(全32問中30問目)
No.30解説へ
Javaなどのバイトコードプログラムをインタプリタで実行する方法と,コンパイルしてから実行する方法を,次の条件で比較するとき,およそ何行以上のバイトコードであれば,コンパイル方式の方がインタプリタ方式よりも処理時間(コンパイル時間も含む)が短くなるか。
〔条件〕
〔条件〕
- 実行時間はプログラムの行数に比例する。
- 同じ100行のバイトコードのプログラムをインタプリタで実行すると0.2秒掛かり,コンパイルしてから実行すると0.003秒掛かる。
- コンパイル時間は100行当たり0.1秒掛かる。
- コンパイル方式の場合は,プログラムの行数に関係なくファイル入出力,コンパイラ起動などのために常に0.15秒のオーバーヘッドが掛かる。
- プログラムファイルのダウンロード時間など,その他の時間は無視して考える。
出典:平成16年秋期 問44
- 50
- 75
- 125
- 155
広告
解説
プログラムの行数をL(100行単位)とするとコンパイル時間を含む処理時間は、
インタプリタ方式の場合、実行時の処理時間だけなので
0.2×L=0.2L
コンパイル方式では、コンパイル時間+オーバーヘッド時間+実行時の処理時間の合計になるので、
0.1L+0.15+0.003L
=0.1L+0.15++0.003L
=0.103L+0.15
となります。
次にコンパイル方式とインタプリタ方式の処理時間が同じになるプログラム行数を方程式を用いて求めます。
0.2L=0.103L+0.15
0.097L=0.15
L≒1.55
Lは100行単位なので、実際のプログラムの行数に直すと、
100×1.55=155行
インタプリタ方式とコンパイル方式の処理時間が同じになる行数は155行であり、これを境にコンパイル方式の処理時間がインタプリタ方式より短くなっていることがわかります。
インタプリタ方式の場合、実行時の処理時間だけなので
0.2×L=0.2L
コンパイル方式では、コンパイル時間+オーバーヘッド時間+実行時の処理時間の合計になるので、
0.1L+0.15+0.003L
=0.1L+0.15++0.003L
=0.103L+0.15
となります。
次にコンパイル方式とインタプリタ方式の処理時間が同じになるプログラム行数を方程式を用いて求めます。
0.2L=0.103L+0.15
0.097L=0.15
L≒1.55
Lは100行単位なので、実際のプログラムの行数に直すと、
100×1.55=155行
インタプリタ方式とコンパイル方式の処理時間が同じになる行数は155行であり、これを境にコンパイル方式の処理時間がインタプリタ方式より短くなっていることがわかります。
広告