平成27年春期午後問2

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
かなたさん  
(No.1)
https://www.fe-siken.com/kakomon/27_haru/pm02.html

設問3について
主プログラムからの呼び出し回数  =  400回
関数Fの中間コード  =  400命令
関数Fが1回呼び出されたときに実行する中間コード  =  2000命令
この3つの関係性がよくわかりませんでした。
400命令と2000命令はそれぞれ何を表してどこに関係するのでしょうか。
問題文の条件の意味がいまいち理解できずすみません…。
2022.05.18 15:20
nsさん 
FE シルバーマイスター
(No.2)
>関数Fの中間コード  =  400命令
これは動的コンパイラによるコンパイル時間に関わります。
>関数Fが1回呼び出されたときに実行する中間コード  =  2000命令
これは関数Fを実際に実行する時間に関わります。

数値の違いはコードにループなどが含まれているためと考えられます。コード上は1命令であっても、実行時にループで10週すれば、10命令分の実行時間がかかることになります。
2022.05.18 19:13
boyonboyonさん 
FE シルバーマイスター
(No.3)
>関数Fの中間コード  =  400命令
400の命令のかたまりで、中にはループ処理などもあると考えてください。

>関数Fが1回呼び出されたときに実行する中間コード  =  2000命令
ループを展開して、実行したときの数、アルゴリズムをトレースするようなものです。

コンパイルするのは、関数Fの400命令なので  0.1x400/1000  秒かかります。

>主プログラムからの呼び出し回数  =  400回
関数Fを400回実行することと同じです。

100回は、中間コードのままインタプリタで実行
300回は、実行形式で実行(1回の実行は中間コード換算2000命令です。)
となります。


2022.05.18 19:14
かなたさん  
(No.4)
ns  さん
boyonboyon  さん
解説ありがとうございました!
通常の実行の計算は命令の中身を分解した状態で計算し、コンパイルは元の命令単位で行われる認識で大丈夫でしょうか?
2022.05.19 11:06

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop