关于debug下和release下程序运行时间不同

        Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。

        Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。

 

例如:在VS2017中 debug模式下 将10000个数据进行插入排序需要的时间为3-4s(这里用的swap函数来实现元素中的交换,如果自己定义交换代码,则只需要0.2s左右,这是因为在Debug模式下的标准库中做一些其他事情,另外运行器也使用的是未优化的版本。),而在release模式下却只需要0.1-0.2s(自定义交换代码为0.05s

 

debug下swap(3.19s): 

release下swap(0.061s):  

debug下自定义交换(0.139s):

release下的自定义交换(0.058s): 

 

其实relsase下的swap函数跟自定义的函数效率差不多了。

 

 

 

 

 

 

 

 

 

 

 

 

Debug模式下,编译器会为程序生成一些额外的信息,例如符号表等,以方便调试。这些信息会增加程序的体积运行时间,但也使得程序更加容错,更容易调试。因此,Debug模式下的程序往往比较稳定,而且运行速度较慢。 在Release模式下,编译器会对程序进行一些优化,以提高程序的运行速度效率。例如,编译器可能会对循环进行优化,使用更高效的算法等。这些优化可能会改变程序的行为,导致程序Release模式下出现问题,而在Debug模式下正常运行。 常见的在Debug模式下可以运行,在Release模式下运行失败的原因包括: 1. 未初始化变量:在Debug模式下,编译器会将未初始化的变量初始化为默认值,而在Release模式下则不会。因此,如果程序依赖于未初始化的变量的默认值,就可能在Release模式下出现问题。 2. 内存泄漏:在Debug模式下,编译器会为每个动态分配的内存块添加一些额外的信息,以便检测内存泄漏等问题。而在Release模式下,这些额外的信息会被省略,导致内存泄漏等问题难以被发现。 3. 未定义行为:在Debug模式下,编译器会对代码中的未定义行为进行检测,并给出警告或错误。而在Release模式下,编译器可能会忽略这些未定义行为,导致程序出现问题。 4. 依赖于调试信息:在Debug模式下,程序中可能会依赖于一些调试信息,例如符号表等。这些调试信息在Release模式下可能会被省略,导致程序出现问题。 如果程序Debug模式下正常运行,但在Release模式下出现问题,可以考虑以下几点: 1. 检查是否有未初始化的变量或内存泄漏等问题。 2. 查看编译器的警告错误信息,修复代码中的未定义行为等问题。 3. 尝试关闭编译器的优化选项,或调整优化级别,以查看是否能够正常运行。 4. 在Release模式下启用调试信息,以便调试程序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值