1

私の理解が正しければ、リリース モードを使用すると、プログラムをデバッグ モードで実行するよりも高速に実行できます。

一般的な質問は、最初にデバッグ モードでプログラムを実行し、次にリリース モードでプログラムを実行するように切り替えて、デバッグ モードで実行するときに通常行われるチェックを「スキップ」する必要があるかどうかです。それとも、最初からリリースモードでプログラムを直接実行できますか?

AdaGide に関して言えば、[コンパイル] の下にデバッグ モードとリリース モードのオプションが表示されます。AdaGide でプログラムをリリース モードで実行するには、リリース モードの横にチェック マークを付けるだけで十分ですか? GNAT GPL コンパイラを使用しています。

どうもありがとう...

4

3 に答える 3

1

免責事項: 私は AdaGide のリリース モードとデバッグ モードの詳細に精通していません。

一般論ですが…

デバッグ モードは、少なくともデバッグ フラグ (-g) がコンパイラに渡され、生成されたオブジェクト ファイルがデバッガで使用するシンボル情報を保持する場合です。アサーションを有効にする -gnata などの他のオプションや、コールバック スタックを例外に格納するために使用されるバインダー -E オプションを渡すことができます。

多くのアサーション (pragma Assert) を使用しない限り、デバッグ モードとリリース モードの間でパフォーマンスの点で大きな違いが生じる可能性はほとんどありません。ただし、デバッグ バージョンのオブジェクト ファイルと実行可能ファイルは、シンボル情報を保持するため、かなり大きくなる可能性があります。

リリース モードが実行時チェックを無効にする可能性があります。これはパフォーマンスに顕著な影響を与える可能性があります。一般的な慣例として、ランタイム チェックを無効にするのはパフォーマンス要件で要求された場合、パフォーマンス重大な影響を与える場合、およびそれらのコード セクションが正式に証明された後、および/または完全にテストされ、正しい実行が検証された後でのみです。

最適化オプション -O2 などは、パフォーマンスに実質的な影響を与えますが、最終的な量はコードの構造と実行方法によって異なります。YMMV。

于 2010-07-03T16:15:31.250 に答える
1

確かに、最初からリリースモードでプログラムを直接実行できます。しかし、それはお勧めできません。プログラムを開発するときは、デバッグ モードで行う方が賢明です。パフォーマンス主導のプログラムである場合は、実行時にボトルネックがないかどうかを確認するためにリリース モードを時々テストすることを妨げるものは何もありません。

リリース モードの横にチェック マークを付けると、AdaGIDE は次回からプログラムを「高速」モードでビルドします。異なるターゲット ディレクトリを定義した場合、2 つの異なる .exe も存在するため、AdaGIDE は適切なバージョンを実行します。

于 2011-01-04T20:39:13.710 に答える
0

リリース プログラムをデバッグ モードで実行することはできません。コードは、デバッグ シンボルとステータス メッセージを使用してコンパイルすることも、それらを使用せずにコンパイルすることもできます。コードをデバッグ モードでコンパイルすると、実行速度が遅くなり、より多くのスペースが必要になります。リリース モードでコンパイルすると、実行速度が速くなり、コンパクトになります。コードがコンパイルされると、そのモードは変更できません。

私は AdaGide や GNAT コンパイラに詳しくありませんが、[リリース モード] ボックスをオンにすると、コードはリリース モードでコンパイルされると思います。

于 2010-07-03T16:08:30.050 に答える