コンパイラ

コンパイラの最適化のレベルを指定するオプションで、最適化をしない設定(-O0など)がよく使われる場面はどれか。

  1. A製品として配布する、できるだけ速いプログラムを作るとき
  2. Bデバッガで1行ずつ動きを確かめながら、誤りを探すとき
  3. Cプログラムのサイズを最も小さくしたいとき
答えと解説を見る

正解:B. デバッガで1行ずつ動きを確かめながら、誤りを探すとき

最適化をしない設定では、ソースコードの各行がほぼそのままの順番で機械語に対応し、変数も常にメモリやレジスタに残るので、デバッガで1行ずつ実行したり変数の値を確かめたりしやすくなります。最適化をかけると、命令の並べ替えや変数の削除によって、ソースとの対応が分かりにくくなります。製品として速いプログラムを作るときは高い最適化レベルを、サイズを小さくしたいときはサイズ優先の設定を使います。

  • A. 速いプログラムには高い最適化レベルを使います。
  • B. 正しい。ソースとの対応が分かりやすく、デバッグに向きます。
  • C. サイズを小さくするにはサイズ優先の設定を使います。
この分野を解く 分野ページへ

コンパイラのほかの問題

  1. プロファイルを使った最適化(PGO)の説明として正しいものはどれか。
  2. リンク時最適化(LTO)によって可能になる最適化として最も適切なものはどれか。
  3. C言語で、符号付き整数のオーバーフローは未定義動作である。この前提で、上の関数を最適化するコンパイラが生成しうるコードとして正しいものはどれか。
  4. プログラムの誤りのうち、コンパイルの時点で見つけることができるものはどれか。
  5. 静的な型をもつ言語で、コンパイラが型検査を行う主な利点はどれか。