1

如果我理解正确,那么发布模式使程序比在调试模式下运行程序运行得更快。

一个普遍的问题是,是否必须首先在调试模式下运行程序,然后切换到在发布模式下运行程序才能让发布模式“跳过”它在调试模式下运行时通常进行的检查?或者是否能够在一开始就以发布模式直接运行程序?

现在谈到 AdaGide,我在 Compile 下看到了选项 debug mode 和 release mode。在发布模式旁边打勾是让 AdaGide 在发布模式下运行程序所需的全部内容吗?我正在使用 GNAT GPL 编译器。

非常感谢...

4

3 回答 3

1

免责声明:我不熟悉 AdaGide 的发布和调试模式的细节。

一般来说,虽然...

调试模式是至少将调试标志 (-g) 传递给编译器,以便生成的目标文件将保留符号信息以供调试器使用。它可以传递其他选项,例如启用断言的 -gnata,以及用于将回调堆栈存储在异常中的 binder -E 选项。

除非您使用大量断言(pragma Assert),否则调试和发布模式之间的性能可能不会有显着差异。但是,由于保留了符号信息,调试版本的目标文件和可执行文件可能会大得多。

发布模式可能会禁用运行时检查——这可能会对性能产生显着影响,但在 Ada 中将其作为名义“发布”模式的一部分几乎总是一件非常糟糕的事情。作为一种通用做法,只有在性能要求需要时、仅它对性能产生重大影响的情况下,并且只有在这些代码部分已被正式证明和/或彻底测试并验证正确执行后,才会禁用运行时检查。

优化选项,-O2 等,将更实质性地影响性能,尽管最终数量取决于代码的结构和执行方式。YMMV。

于 2010-07-03T16:15:31.250 回答
1

当然,您可以在开始时直接以发布模式运行程序。但这是不可取的。当你开发你的程序时,在调试模式下做会更聪明。如果它是一个性能驱动的程序,没有什么能阻止你不时地测试 Release 模式,看看运行时是否存在瓶颈。

在发布模式旁边放置一个复选标记将使 AdaGIDE下次在“快速”模式下构建您的程序。如果您定义了不同的目标目录,也会有两个不同的 .exe,因此 AdaGIDE 将运行相应的版本。

于 2011-01-04T20:39:13.710 回答
0

您不能在调试模式下运行发布程序。可以使用调试符号和状态消息编译代码,也可以不使用它们进行编译。如果代码在调试模式下编译,它会运行更慢,占用更多空间;如果在release模式下编译,运行速度会更快,更紧凑。一旦代码被编译,它的模式就不能改变。

我不熟悉 AdaGide 或 GNAT 编译器,但我假设如果您选中“发布模式”框,代码将以发布模式编译。

于 2010-07-03T16:08:30.050 回答