C++性能优化笔记-7-编译器中的优化-4-编译器优化选项、优化指令

编译器优化选项

所有C++编译器有各种你可以打开、关闭的优化选项。了解正在使用编译器可用的选项,并打开所有相关选项,是重要的。

许多优化选项与调试不兼容。调试器可以一次执行一行代码,并显示所有变量的值。显然,在部分代码被重排、内联或优化掉时,这是不可能的。通常制作可执行程序的两个版本:带有完整调试支持,在程序开发期间使用的调试版本;以及打开所有相关优化选项的发布版本。大多数IDE(集成开发环境)有制作目标文件与可执行文件的调试版本与发布版本的设施。确保区分这两个版本,在可执行文件的优化版本里关闭调试与分析支持。

大多数编译器提供优化大小与优化速度的选择。优化大小:在代码是快速的且希望可执行文件尽可能小,或者代码缓存是关键的时。优化速度:在CPU使用与内存使用是关键时间消耗者时。最高的优化等级选项通常是最好的,除了一些特定的场景。

某些编译器提供分析指引(profile-guided)优化。这以下面的方式工作。首先,你使用分析支持编译程序。然后,你使用分析器进行一次测试运行,确定程序流以及每个函数与分支执行的次数。然后,编译器可以使用这个信息优化代码,以最优的次序放置不同的函数。

某些编译器支持全程序优化。这通过两步编译进行。首先,所有的源文件被编译为一个中间文件格式,而不是普通的目标文件格式。然后第二步,中间文件被链接起来。寄存器分配与函数内联在第二步完成。中间文件格式不是标准化。甚至在同一个编译器的不同版本间也不兼容。因此,以这个格式发布函数是不可能的。

其他编译器提供了将多个.cpp文件编译为单个目标文件的可能性。进行全程序优化一个更原始、但高效的方式是,通过#include指示把所有的源文件合并为一个,并把所有函数声明为staticinline。这将使编译器能进行全程序的过程间优化。

在不需要与旧CPU兼容时,你可以选择较新的指令集。甚至更好,你可以制作代码关键部分的多个版本以支持不同的CPU。

在没有异常处理时,代码变得更高效。建议关闭异常处理的支持,除非代码依赖结构化的异常处理,且你希望代码能够从异常恢复。

建议关闭。。。

优化指令

某些编译器有许多关键字与指令用于在代码特定位置给出特定的优化指令。许多这些指示是与编译器相关的。你不能预期用于Windows编译器的指令能在Linux编译器上工作,反之亦然。但大多数Microsoft指令在用于Windows的Intel编译器与Gnu编译器上起作用,而大多数Gnu指令在用于Linux的PathScale与Intel编译器上起作用。

在所有C++编译器上起作用的关键字

关键字volatile确保一个变量不会被保存在寄存器里,即使临时。这目的在于在多个线程间共享变量,但它也可以用于关闭用于测试目的变量的所有优化。

。。。
关键字static,在应用到类成员函数时,表示它不能访问任何非静态数据成员或成员函数。静态成员函数的调用比非静态成员函数快,因为它不需要this指针。建议只要合适,将成员函数声明为static

编译器特定关键字

快速函数调用。__fastcall或者__attribute__((fastcall))。在32位模式中,fastcall修饰符会使32-bit模式函数调用更快。前两个整形参数在寄存器中传递而不是栈。Fastcall函数在编译器间不兼容。在参数在寄存器中传递的64位模式中,不需要fastcall。

纯函数。__attribute__((const))(仅Linux)。声明一个函数为纯函数。这允许公共子表达式消除与循环不变代码移动。

。。。

欢迎交流
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Dev C是一款免费的集成开发环境(IDE),可用于C/C++语言的编程。以下是一些关于Dev C的教程笔记。 首先,要使用Dev C进行编程,我们需要先安装该软件。可以在官方网站下载其安装程序,然后按照提示进行安装。 安装完成后,我们可以打开Dev C开始编程。在新建项目时,可以选择C或C++语言,并给项目命名。在项目,我们可以添加源文件、头文件等,并编写相应的代码。 Dev C具有很多实用的功能,其之一是自动补全。当我们开始输入代码时,Dev C会自动提示可能的命令或关键字,节省了编写代码时的时间和劳力。 在编写代码过程,我们可以使用Dev C的内置调试器来调试程序。当程序出现错误时,可以设置断点,并逐步执行代码,以便找到错误所在。 另外,Dev C还具有集成的编译器,可以将我们编写的程序转换为机器语言。编译器会检查代码的错误并生成可执行文件,供我们运行和测试。 除此之外,Dev C还提供了丰富的库函数和命令,方便我们进行各种操作,如文件读写、内存管理等。 最后,值得一提的是,由于Dev C是一个开源软件,其源代码可供修改和定制。这意味着我们可以根据自己的需求对其进行扩展和改进,进一步提高编程效率和体验。 总之,使用Dev C进行C/C++编程是一种方便和高效的选择。通过学习其基本功能和使用方法,我们可以更好地掌握编程技能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值