━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
お気楽系情報処理マガジン 〜基本情報・シスアド〜
2005.05.17 Vol. 80
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
おはようございます。
【お気楽系情報処理マガジン】発行人のユウキです。
■問題
────────────────────────────────────
Javaなどのバイトコードプログラムをインタプリタで実行する方法と、コン
パイルしてから実行する方法を、次の条件で比較するとき、およそ何行以上の
バイトコードであれば、コンパイル方式の方がインタプリタ方式よりも処理時
間(コンパイル時間も含む)が短くなるか。
[条件]
(1)実行時間はプログラムの行数に比例する。
(2)同じ100行のバイトコードのプログラムをインタプリタで実行すると0.2秒
かかり、コンパイルしてから実行すると0.003秒かかる。
(3)コンパイル時間は100行当たり0.1秒かかる。
(4)コンパイル方式の場合は、プログラムの行数に関係なくファイル入出力、
コンパイラ起動などのために常に0.15秒のオーバヘッドがかかる。
(5)プログラムファイルのダウンロード時間など、そのほかの時間は無視して
考える。
ア 50
イ 75
ウ 125
エ 155
■解答
────────────────────────────────────
エ
(基本情報技術者平成16年秋問44)
■解説
────────────────────────────────────
プログラムの行数がn行の場合の、インタプリタ方式とコンパイル方式の両
者を比較してみましょう。
┌─────────────┐
│インタプリタ方式の処理時間│
└─────────────┘
(2)より
インタプリタ方式の実行時間 = 0.002 × n
┌────────────┐
│コンパイル方式の処理時間│
└────────────┘
(4)より
コンパイルのオーバヘッド時間 = 0.15
(3)より
コンパイル時間 = 0.001 × n
(2)より
コンパイル方式の実行時間 = 0.00003 × n
コンパイル方式の処理時間は、上記の和となるので、
0.15 + 0.00103 × n
で表すことができます。
コンパイル方式のほうが処理時間が短くなるプログラム行数を求めるために
は下記の不等式を解きます。
0.002 × n > 0.15 + 0.00103 × n
n > 154.6
したがって、答えはエです。
■あとがき
────────────────────────────────────
アメリカの転職支援会社の予測によると、
「スターウォーズエピソードIII:シスの復讐」が公開される
5月19日には膨大な欠勤者数が出る見込み、とのことです。
前作のエピソードIIでは公開二日間で、
940万人のファンが映画館に足を運びました。
それらデータ等を分析すると、
本作による、企業の生産性の低下に伴う損失額は、
6億2700万ドルに上る可能性もあるらしいです。
上司への欠勤の言い訳をする為の、
冗談の定型書簡は笑えます。
http://www.itmedia.co.jp/enterprise/articles/0505/16/news062.html
スペースオペラの超大作、ファンにとってはお祭り騒ぎですね。
ちなみに、僕は前作もまだ見てないです。