基本情報技術者試験の過去問と解説
[TOP] [午前分野別] [午後分野別] [キーワード索引] [令和元年秋午前] [令和元年秋午後]

平成24年 春期 基本情報技術者 午後 問02
問02   5問選択

問2 コンパイラの最適化に関する次の記述を読んで,設問1〜3に答えよ。

 コンパイラとは,プログラム言語で記述された原始プログラムを翻訳して目的プログラムを 生成するためのソフトウェアである。コンパイラの機能の一つに最適化がある。 最適化では,原始プログラムを翻訳する過程で,プログラムの実行時間を短くするために 原始プログラムの構造を変換する。最適化の方法の例を表1に示す。

         表1 最適化の方法の例
   最適化の方法      内容
関数のインライン展開 関数を呼び出す箇所に,呼び出される関数のプログラムを
展開する。
共通部分式の削除 同じ式が複数の箇所に存在し,それらの式で使用している
変数の値が変更されず,式の値が変化しないとき,その式
の値を作業用変数に格納する文を追加し,複数の同じ式を
その作業用変数で置き換える。
定数の畳込み プログラム中の定数同士の計算式を,その計算結果で置き
換える。
定数伝播(ぱ)変数を定数で置き換える。
無用命令の削除プログラムの実行結果に影響しない文を削除する。
ループ内不変式の移動 ループ中で値の変化しない式があるとき,その式をループ
の外に移動する。
ループのアンローリングループ中の繰返しの処理を展開する。
 擬似言語の形式で記述したプログラムの一部(以下,プログラム1という)に対して, 表1の最適化の方法を複数組み合わせて最適化した例を,表2に示す。

[プログラム1]

         表2 プログラム1の最適化の例

設問1 次の記述中の に入れる正しい答えを,解答群の中から選べ。

 表2において,最適化の方法を@,A,Bの順で適用するとき,Aで 適用される最適化の方法は であり,Bで適用される最適化の 方法は である。

a,b に関する解答群

ア 関数のインライン展開     イ 共通部分式の削除

ウ 定数の畳込み     エ 定数伝播

オ 無用命令の削除     カ ループ内不変式の移動

キ ループのアンローリング

解答 a ←クリックすると正解が表示されます

解答 b ←クリックすると正解が表示されます

基本情報技術者試験


設問2 次の記述中の に入れる正しい答えを,解答群の中から選べ。

 関数のインライン展開の例を図1に示す。図1の関数 func をインライン展開した場合, 実引数 10 の値が仮引数 p に代入され,その値 10 が関数 func 内の変数 p の値になる(図1@)。 次に, の方法を適用することによって, 条件式 p≧ 10 の判定結果や p を含んだ計算式の計算結果がコンパイル時に確定する(図1A)。 その結果,func(10) を値 15 に置き換えることができる(図1B)。

 なお,#w はコンパイラが最適化をしたときに生成した整数型の変数である。


     図1 関数のインライン展開の例

c に関する解答群

ア 共通部分式の削除     イ 定数の畳込み

ウ 定数伝播     エ 無用命令の削除

オ ループ内不変式の移動     カ ループのアンローリング

解答 c ←クリックすると正解が表示されます

基本情報技術者試験


設問3 次の記述中の に入れる適切な答えを,解答群の中から選べ。

 最適化をしないときと最適化をしたときとで浮動小数点数の演算の結果が異なる場合がある。 プログラム1に対して表2の最適化をしなかったものと,最適化をしたものとに, y[0]=307000000.0,y[1]=305000000.0,m =-303000000.0,n = 4.0 を与えて実行した。 その結果の x[0],X[1] が次のとおりになった。ここで,同一優先順位の算術演算子は,左から順に演算する。

最適化をしないとき:   x[0]=4000004.0,x[0]=2000004.0

最適化をしたとき:    x[0]=4000000.0,x[1]=2000000.0

 この実行結果が異なる原因としては, の方法の適用によって演算順序が変化したことで, が発生したからである。ここで,浮動小数点数の演算は単精度(仮数部は 23 ビット)で 計算しているものとする。

d に関する解答群

ア 関数のインライン展開     イ 共通部分式の削除

ウ 定数の畳込み     エ 定数伝播

オ 無用命令の削除     カ ループ内不変式の移動

キ ループのアンローリング

e に関する解答群

ア 桁あふれ     イ 桁落ち     ウ 情報落ち     エ 丸め誤差

解答 d ←クリックすると正解が表示されます

解答 e ←クリックすると正解が表示されます


[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]