HOME»基本情報技術者試験掲示板»平成27年春期午後問2
投稿する

平成27年春期午後問2 [4272]

 かなたさん(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さん(No.2) 
FE シルバーマイスター
>関数Fの中間コード  =  400命令
これは動的コンパイラによるコンパイル時間に関わります。
>関数Fが1回呼び出されたときに実行する中間コード  =  2000命令
これは関数Fを実際に実行する時間に関わります。

数値の違いはコードにループなどが含まれているためと考えられます。コード上は1命令であっても、実行時にループで10週すれば、10命令分の実行時間がかかることになります。
2022.05.18 19:13
boyonboyonさん(No.3) 
FE シルバーマイスター
>関数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日経過したスレッドへの投稿はできません。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop