Debug模式是调试模式,会有很多冗余的调试代码,供开发者调试程序使用。

在这里插入图片描述
VS是默认使用Debug模式的,我使用的是VS 2017。

在Debug模式下,是默认开启 禁止优化 的,我们来查看一下

  • 在左侧源文件的 main.c 处右键单击,选择 属性
    在这里插入图片描述
  • 找到C/C++下的优化
    在这里插入图片描述
    可以看到,默认是 禁用优化

Release与不同等级的优化

首先切换到Release模式
在这里插入图片描述
再查看一下 优化
在这里插入图片描述
可以看到,默认优化方式是 O2

打开下拉菜单
在这里插入图片描述
可以看见有三种优化方式,这个你是可以自己选择的。

Debug与Release的区别

  • Debug是调试模式,仅供开发者调试使用,不能作为产品发布
  • Release是发布模式,生成的可执行文件可以作为产品发布

Release中三种优化模式的区别

发布的产品,不同优化级别有所区别

  • O1:这个模式下,文件大小最小,速度比O2慢
  • O2:这个模式下,速度最快,文件大小比O1大
  • Ox:这个模式下,兼顾文件大小与速度,可能牺牲兼容性

备注:这只是大致的含义,不包含细节,具体细节请阅读专业文档。

使用反汇编对比这几种方式

VS 2017 查看反汇编

Debug与Release的区别

如果要将中文翻译成英文,有两种方式

  • 直译
  • 意译

将高级语言翻译成汇编语言,也有两种方式

  • 直译:Debug
  • 意译:Release

Debug是直接将你写的高级语言语法进行翻译,基本上是按照你的书写格式进行的,而Release则是自己写的,但是含义完全一样,这里和 语言的意译不同 ,是真的完全一样。

本地变量(可被 优化 器移除或移动到调试器无法识别的位置)。 函数内部的位置(当 优化 器合并代码块时发生变化的位置)。 调用堆栈上框架的函数名称(如果 优化 器合并两个函数,则函数名称可能是错误的)。 但是,假定所... 这将会关闭" Release "模式下的代码 优化 ,可能让你更好地进行调试。并且即使关闭 优化 ," Release "模式下的调试仍然可能没有" Debug "模式那么直观和有效,因为某些调试信息在" Release "模式下可能并不可用。在 Visual Studio 中,你可能不会直接看到名为"配置属性"的 选项 ,而是会看到各种配置属性的子 选项 。在"生成"页面中,你可以看到一个" 优化 代码"的 选项 ,对于" Release "模式,这个通常是被勾选的。在弹出的属性页面中,选择 “生成” 选项 。取消勾选" 优化 代码" 选项 ,然后保存更改。 VS -IDE代码 优化 : 属性->配置属性->C/C++->代码生成:启用增强指令集,可选用 流式处理 SIMD 扩展 2 (/arch:SSE2) (/arch:SSE2)、流式处理 SIMD 扩展 2 (/arch:SSE2) (/arch:SSE2) 进行加速浮点模型,可选用 快速 (/fp:fast) 进行浮点数据运算的加速 属性->配置属性->C/C++... VC- Project Setting- Debug -Project Option语法解释- 优化 -  / O1 最小化空间 minimize space /Op[-] 改善浮点数一致性 improve floating-pt consistency / O2 最大化速度 maximize speed /Os  优选代码空间  favor code space /Oa 假设没有别名 assume no VS 作为宇宙第一编辑器,特别是2017发布后应该吸引了无数的程序员使用,但是 vs 2017启动速度较慢,所以特地研究了下 vs 2017加速启动的方法。以下方法均为微软官方提供的建议,大家可以尝试一下。 可通过使用右键单击上下文菜单,从解决方案资源管理器中卸载很少使用的各个项目。 重构解决方案 可以将解决方案拆分为多个较小的解决方案文件,并在这些文件中包含常用的项目。 此重构可大幅... 最近遇到好多 debug 编译 可以运行, release 编译 运行崩溃的问题。多与 优化 有关。可以通过关闭 release 优化 来验证是否与 优化 有关。如果发生错误,多数是 优化 时的命名返回值 优化 产生的问题,这样的 优化 会导致程序在 优化 与未 优化 之间的不同行为http://blog.csdn.net/xinqingwuji/article/details/78802683下面是 vs 优化 选项 说明:/O 选项 控制有助于... 什么是复制和移动省略?当 C++ 函数中的关键字后跟非基元类型的表达式时,该 return 语句的执行会将表达式的结果复制到调用函数的返回槽中。为此,将调用非基元类型的复制或移动构造函数。然后,作为退出函数的一部分,调用函数局部变量的析构函数,可能包括关键字后面的表达式中命名的任何变量。returnC++规范允许 编译 器直接在调用函数的返回槽中构造返回的对象,省略作为返回的一部分执行的复制或移动构造函数。 属性 => c/c++ => 常规 => 调试信息格式 , release 设置无, debug 设置程序数据库 (/Zi)属性 => c/c++ => 优化 => 优化 release 模式下设置已禁用 (/Od), debug 模式下设置已禁用 (/Od)属性 => 链接器 => 调试 => 生成调试信息, release 模式下设置否, debug 模式下设置生成调试信息 (/ DEBUG )...... 开启 O2 编译 优化 :首先说 Visual Studio 如何开启- O2 编译 优化 选项 ,右键单击项目,点击属性。找到C/C++下的 优化 选项 ,将默认改为 O2 优化 ,然后点击确认即可。 编译 错误:在 编译 的时候出现了这样一个错误。 解决方案:在查阅官方文档之后,发现将/RTC改为默认设置即可 设置步骤:在C/C++中的代码生成把/RTC1改成默认值即可 然后就可以正常 编译 啦,乐。 由于当前项目包含了很大.cpp文件,以至于无法享受到DLL动态 编译 的快感,所以就在网上找了很多方法,将试用后的方法介绍给大家。亲测”多处理器加速“,可以将 编译 速度至少提升一倍以上,而且没有对源程序生成.ex...