gcc - gcc 的选项直到更新版本才起作用
问题描述
我最近在为 gcc 的优化而苦恼,希望对性能提升有所帮助。
我找到了选项-freorder-blocks-and-partition
。
(此选项存在于非常旧的 gcc 版本中,例如 gcc 5.6。)
它可以用来划分冷/热冷来分离函数,与-ffunction-sections
链接器脚本一起,冷/热代码可以放入单独的 ELF 部分(.text 部分和 .text.cold 部分)。
但是这个选项只适用于最近的 gcc 版本。
我在 gcc 10.1 上对其进行了测试,并使用以下编译器探索工具,确保它从 8.1 版开始工作:
在 gcc8.1:https ://godbolt.org/z/hGcnMM中,汇编代码包含如下函数:
fa(int, int) [clone .cold.0]:
在 gcc7.1: https://godbolt.org/z/rhqjE1中,汇编代码不包含这样的功能。
为什么它不适用于旧的 gcc?
有没有办法控制旧版本的 gcc 应用这种优化?
解决方案
推荐阅读
- dart - 颤振:输入'列表
' 不是类型 'List 的子类型 ' - dictionary - map[byte]int 和 map[string]int 有不同的内存使用
- java - 更改从 Java 控制器返回的 JSON 的默认结构
- windows - 如何使用命令行设置 Windows 服务以在系统关闭时运行
- c# - 在 While 循环中写入时,Console.ReadLine 缺少输入
- docker - Papertrail 不使用系统主机名
- kotlin - 调用带参数的高阶函数
- angular - 使用 @Input Observable var 对 Angular 7 组件进行单元测试并在 ngOnInit 方法中订阅此 var
- python - 如何处理多个包含斜杠的参数?
- java - 使用 JAXB 的动态 XML 属性