マナビング基本情報技術者

コンパイラ最適化で短くする時間はどれか

基本情報技術者試験 平成30年度春期 午前 問18 / ソフトウェア › 開発ツール

過去問にチャレンジ

平成30年度春期 午前 問18

コンパイラによる最適化の主な目的はどれか。

  1. ア

    プログラムの実行時間を短縮する。

  2. イ

    プログラムのデバッグを容易にする。

  3. ウ

    プログラムの保守性を改善する。

  4. エ

    目的プログラムを生成する時間を短縮する。

会話形式の解説

講師講師
ここでは、最適化によって何の効率を高めるのかに注目します。時間を測る場面が鍵です。
受験者受験者
コンパイラの処理なので、目的プログラムを作る時間を短くすることかと思いました。
講師講師
最適化の対象は、コンパイラが生成するプログラムです。生成する時間と、生成後に動かす時間のどちらを考えるとよいでしょうか。
受験者受験者
生成されたプログラムを効率よく動かすなら、実行する時間です。
講師講師
そのとおりです。不要な処理を省くなどして実行効率を高めるので、実行時間の短縮が正解です。
受験者受験者
デバッグを容易にするという選択肢も、開発には役立ちそうです。
講師講師
デバッグのしやすさは、最適化の主な目的ではありません。ここで問われるのは、生成されたプログラムの実行効率です。
受験者受験者
保守性を改善するという選択肢はどう考えますか。
講師講師
ソースコードの保守性は主に設計や記述方法に関わります。これもコンパイラ最適化の主な目的には当たりません。
受験者受験者
目的プログラムを生成する時間はコンパイルにかかる時間ですね。生成後の実行時間と区別できました。
講師講師
はい。『時間の短縮』という言葉だけで選ばず、プログラムを生成する時間なのか、実行する時間なのかを確かめましょう。

まとめ

コンパイラによる最適化の主な目的は、生成されたプログラムの実行効率を高めることです。不要な処理を省くことは、その一例です。デバッグのしやすさやソースコードの保守性、目的プログラムを生成する時間とは区別します。

解答・解説

正解はアです

この問題のテーマ

コンパイラによる最適化が、何を効率化するための処理かを問う問題です。

解き方の考え方

最適化の対象は、コンパイラが生成するプログラムです。不要な処理を省くなどして、生成されたプログラムの実行効率を高めることを考えます。選択肢では、プログラムの実行時間と、開発・コンパイルに関わる時間や作業を区別します。

選択肢ごとの解説

  1. ○ア  プログラムの実行時間を短縮する。
    プログラムの実行時間を短縮するという説明です。生成されるプログラムを効率よく動かすことが最適化の主な目的なので、これが正解です。
  2. ×イ  プログラムのデバッグを容易にする。
    デバッグを容易にするという説明です。最適化は生成されるプログラムの実行効率を高める処理であり、デバッグのしやすさを主な目的とはしていません。
  3. ×ウ  プログラムの保守性を改善する。
    プログラムの保守性を改善するという説明です。ソースコードの保守性は主に設計や記述方法に関わるため、コンパイラ最適化の主な目的には当たりません。
  4. ×エ  目的プログラムを生成する時間を短縮する。
    目的プログラムを生成する時間、つまりコンパイルにかかる時間を短縮するという説明です。問われているのは生成後のプログラムの実行効率なので、時間を測る場面が異なります。

POINT

  • コンパイラ最適化の主な目的は、生成されたプログラムの実行効率を高めることです。
  • 不要な処理の削除は、最適化の一例です。
  • 「プログラムを実行する時間」と「プログラムを生成する時間」を区別します。

※出典:平成30年度春期 基本情報技術者試験 午前 問18