我想选择编译器优化来生成尽可能快的应用程序。

我应该将以下哪些设置设置为 true?

  • 死店消除
  • 消除基本块和函数中的重复表达式
  • 启用循环感应变量和强度降低
  • 启用奔腾指令调度
  • 扩展常见的内在函数
  • 优化跳跃
  • 使用寄存器变量

还有一个选项“生成最快的代码”,我显然已将其设置为 true。但是,当我将其设置为 true 时,上述所有选项仍设置为 false。

所以我想知道如果我将上述任何选项设置为 true 是否会加快应用程序的速度?

有帮助吗?

解决方案

所以我想知道如果我将上述任何选项设置为 true 是否会加快应用程序的速度?

我知道有些人会因此恨我,但是 这里没有人能如实回答你. 。你必须在有或没有它们的情况下尝试你的程序,并且 轮廓 每个构建并查看结果是什么。猜测工作不会让任何人有任何进展。

无论是否经过您的许可,编译器都已经进行了大量(!)的出色优化。最好的选择是以干净且有组织的方式编写代码,并担心可维护性和可扩展性。正如我喜欢说的:现在编码,稍后优化。

其他提示

不要对个人优化进行微观管理。编译器编写者都是非常聪明的人 - 只要将它们全部打开,除非您发现不需要这样做。您最好将时间花在优化代码(提高函数的算法复杂性等)上,而不是摆弄编译器选项。

我的其他建议是使用不同的编译器。英特尔作为优化编译器享有盛誉。VC和GCC当然也是不错的选择。

您可以使用不同的编译选项查看生成的代码,看看哪个最快,但我知道现在很多人没有这样做的经验。

因此,对应用程序进行概要分析会很有用。如果有一个明显需要速度的部分,请添加一些代码来执行它一千或一千万次,并使用它计时 utime() 如果有的话。循环应该运行足够长的时间,以便间歇性运行的其他进程不会影响结果 - 十到二十秒是流行的基准范围。或者运行多次计时试验。编译不同的测试用例并运行它以查看哪种效果最好。

花一两个小时研究优化选项很快就会发现大多数效果都很轻微。然而,花同样的时间思考算法的本质并进行小的改变(代码删除尤其有效)通常可以 极大地 提高执行时间。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top