如果我理解正确,那么释放模式使程序运行得比在调试模式下运行程序更快。
一般的问题是,如果必须首先在调试模式下运行程序,然后切换到以释放模式运行程序,以便释放模式“跳过”它在调试模式下运行时正常进行的检查?或者是否能够在开始时直接在发布模式下运行程序?
现在谈到AdaGide,我在Compile下看到了选项调试模式和发布模式。在释放模式旁边放置一个复选标记是让AdaGide在发布模式下运行程序所需的全部内容吗?我正在使用GNAT GPL编译器。
非常感谢...
答案 0 :(得分:1)
免责声明:我不熟悉AdaGide发布和调试模式的细节。
一般来说,虽然......
调试模式是指至少将调试标志(-g)传递给编译器,以便生成的目标文件将保留符号信息以供调试器使用。它可以传递其他选项,例如启用断言的-gnata,以及用于在异常中存储回调堆栈的binder -E选项。
除非你使用了很多断言(编译指示断言),否则在调试和发布模式之间性能的可能性不大。但是,由于保留了符号信息,调试版本的目标文件和可执行文件可能会大得多。
发布模式可能会禁用运行时检查 - 这可能会对性能产生明显影响,但作为标称“发布”模式的一部分,这样做几乎总是非常糟糕的事情在阿达做。作为一般做法,当性能要求需要时,只禁用运行时检查 ,只有 它才会对性能产生重大影响,并且只有在正式证明这些代码部分和/或详尽测试并验证其是否正确执行。
优化选项-O2等会对性能产生更大的影响,但最终的数量取决于一个人的代码的结构和执行方式。 YMMV。
答案 1 :(得分:1)
当然,您可以在开始时直接在发布模式下运行程序。但这不可取。在开发程序时,在调试模式下更聪明。如果它是一个性能驱动的程序,那么没有什么可以阻止你不时地测试Release模式以查看运行时是否存在瓶颈。
在发布模式旁边放置一个复选标记,可以让AdaGIDE 构建下次进入“快速”模式。如果您定义了不同的目标目录,那么还会有两个不同的.exe,因此AdaGIDE将运行相应的版本。
答案 2 :(得分:0)
您无法在调试模式下运行发布程序。可以使用调试符号和状态消息编译代码,也可以在没有它们的情况下编译代码。如果代码是在调试模式下编译的,它将运行得更慢并占用更多空间;如果它是在发布模式下编译的,它将快速运行并且更紧凑。代码编译完成后,其模式无法更改。
我不熟悉AdaGide或GNAT编译器,但我认为如果选中“Release Mode”框,代码将在发布模式下编译。