平成27年春期午後問2
かなたさん
(No.1)
https://www.fe-siken.com/kakomon/27_haru/pm02.html
設問3について
主プログラムからの呼び出し回数 = 400回
関数Fの中間コード = 400命令
関数Fが1回呼び出されたときに実行する中間コード = 2000命令
この3つの関係性がよくわかりませんでした。
400命令と2000命令はそれぞれ何を表してどこに関係するのでしょうか。
問題文の条件の意味がいまいち理解できずすみません…。
設問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 さん
解説ありがとうございました!
通常の実行の計算は命令の中身を分解した状態で計算し、コンパイルは元の命令単位で行われる認識で大丈夫でしょうか?
boyonboyon さん
解説ありがとうございました!
通常の実行の計算は命令の中身を分解した状態で計算し、コンパイルは元の命令単位で行われる認識で大丈夫でしょうか?
2022.05.19 11:06
広告
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
広告