为尽可能快的代码编译器优化

问题描述:

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

下列哪个设置应该设置为true?

  • 消除死存储
  • 消除基本块中重复的表达式和函数
  • 启用循环归纳变量和强度降低
  • 启用奔腾指令调度
  • 展开常用的本质功能
  • 优化跳跃
  • 使用寄存器变量

还有“生成最快可能的代码”选项,我明显地设置为true。但是,当我将其设置为true时,以上所有选项仍然设置为false。

所以我想知道如果任何上述选项将加快应用程序,如果我将它们设置为true?

所以我想知道如果任何上述选项将加快应用程序,如果我将它们设置为true?

我知道有些人会讨厌我这个,但是这里没人能够如实回答你。您必须尝试使用​​和不使用它们的程序,然后分别使用配置文件来查看结果。猜测工作不会在任何地方得到任何人。

编译器已经做了很多优化的吨(!),无论是否经过您的许可。你最好的选择是把你的代码编写成一个干净有组织的问题,并担心可维护性和可扩展性。正如我想说的:现在编码,稍后优化。

+1

同意编码和清理有组织的方式 - 但是它不会伤害到找到任何快速优化,你可以做一个IDE选项 – Seth 2010-01-14 05:43:13

+0

切换再次,你不知道它不会伤害,你认为这也许是对的。正如我所说的,无论如何,任何简单的优化都在进行,并且在优化构建中(就像你已经启用的那样),它会做每个你可以想到的教科书优化,可能更多。 – GManNickG 2010-01-14 06:27:29

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

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

花费一两个小时玩优化选项很快就会发现大多数效果都很小。然而,同样的时间花在思考算法的本质并做出小的更改(代码清除特别有效),通常可以大大提高执行时间。

不要微观管理个人优化。编译器编写者是非常聪明的人 - 只要把它们全部打开,除非你看到一个特定的需要。通过优化代码(改进函数的算法复杂度等),而不是摆弄编译器选项,您的时间会更好。

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

+0

非常感谢特里,不幸的是我的双手绑定在rad-studio-2009编译器上。 – Seth 2010-01-14 22:41:29