【问题标题】:How to find out which specific optimization affects my code significantly using gcc如何使用 gcc 找出哪些特定优化显着影响我的代码
【发布时间】:2013-12-14 22:28:50
【问题描述】:

我曾经认为我可以通过指定-fauto-inc-decoptimization options 中提到的所有其余部分来模拟gcc 中的-O1 以进行一级优化。但是,我错了,因为这个question 有一个答案。

假设-O1确实对代码产生了显着影响,那么我该如何找到哪些优化方法可以解释差异?

编辑:

我使用了gcc -c -Q -O1 --help=optimizers,在答案中建议找出-O1 中使用的所有优化器,并使用-foptimizer 语法使用它们。但是,没有观察到显着差异。一些优化没有相应的-foptimizer 语法,正如question 中提到的那样,我猜隐藏的优化在这种情况下会产生巨大的差异。我怎样才能找到它们?

【问题讨论】:

  • 在你的地方我没有使用-O?选项,但在独立打开/关闭不同的优化选项时发挥了一些作用。
  • 一般你不能。看MILEPOST GCC;另请参阅gcc-fdump-tree-all-fdump-all-passes 选项;也许考虑使用MELT
  • @PeterHorvath 查看修改后的问题,如何找出没有 -foptimizer 等效项的优化?

标签: optimization gcc


【解决方案1】:

你可以区分:

gcc -c -Q -O1 --help=optimizers

gcc -c -Q -O0 --help=optimizers

gcc 命令将显示-O0-O1 的启用和禁用优化器选项列表。

然后您可以单独启用或禁用特定的优化器选项,以查看哪个对您的程序影响最大。

【讨论】:

  • 我可以用你的方法找出-O1中使用的所有优化器。但是,当我使用-fopitimizer 语法指定它们时,它们并没有提高性能,这可能可以通过question 来解释,在原始问题中也提到了。
猜你喜欢
  • 1970-01-01
  • 2013-01-22
  • 2016-08-04
  • 1970-01-01
  • 2015-11-02
  • 1970-01-01
  • 2016-10-12
  • 2016-07-22
  • 1970-01-01
相关资源
最近更新 更多