GCC的已知C/C++优化是什么?

veh*_*zzz 1 c c++ optimization gcc

我有很多代码需要优化并使其运行得更快.我用opreport告诉我代码花了很多时间.我使用以下命令来获取统计信息

opreport -g -l -d
Run Code Online (Sandbox Code Playgroud)

使用不同的标志可以获得建议以获得更好的统计数据,也许每个行号而不是功能号找到它.

因此,我所看到的很多问题都与以下方面有关:

  • 指针,多维数组
  • 乘法
  • 循环

我希望编译器能够更好地优化代码,从而帮助他.我将一些代码块分解为带有字限制的函数,告诉编译器我的指针数组不重叠.

所以我正在寻找(a)可以使代码运行更长时间的常见C结构和(b)如何帮助编译器优化代码.

谢谢

ezp*_*zpz 6

注意分析工具的报告,它们可能会产生误导.例如,考虑一个执行大量字符串比较的应用程序,而不是其他.报告将告诉您,您将90%的时间花在字符串比较函数上.所以很自然地,你决定实现该代码的优化版本只发现分析器告诉你你仍然花费90%的时间在那里(因为这是你的所有程序......).

您必须熟悉您的应用程序并将其应用于分析器,否则您可能会浪费精力.

今天的编译器在优化方面做得相当不错(特别是使用额外的标志作为选项).您不太可能从语言级别的任何事情中受益(例如,您如何处理数组) - 如果您想要手动调整,您可能必须读取/写入asm.

  • 当然,如果90%字符串比较的原因是使用`std :: set <string>`而不是`std :: tr1 :: unordered_set <string>`,那么改进字符串比较是错误的解决方案.分析器不会为您选择正确的算法.它只是给你事实. (2认同)