我想选择编译器优化来生成最快的应用程序。
我应该将以下哪些设置设置为 true?
- 死店消除
- 消除基本块和函数中的重复表达式
- 启用循环感应变量和强度降低
- 启用 Pentium 指令调度
- 扩展常用的内在函数
- 优化跳跃
- 使用寄存器变量
还有“生成尽可能快的代码”选项,我显然已将其设置为 true。但是,当我将其设置为 true 时,上述所有选项仍设置为 false。
所以我想知道如果我将上述任何选项设置为true,它们是否会加速应用程序?
我想选择编译器优化来生成最快的应用程序。
我应该将以下哪些设置设置为 true?
还有“生成尽可能快的代码”选项,我显然已将其设置为 true。但是,当我将其设置为 true 时,上述所有选项仍设置为 false。
所以我想知道如果我将上述任何选项设置为true,它们是否会加速应用程序?
所以我想知道如果我将上述任何选项设置为true,它们是否会加速应用程序?
我知道有些人会因此而讨厌我,但这里没有人能如实回答你。您必须尝试使用和不使用它们的程序,并分析每个构建并查看结果。猜测工作不会让任何人到任何地方。
编译器已经做了很多(!)的优化,不管你是否允许。最好的办法是用干净和有条理的方式编写代码,并担心可维护性和可扩展性。正如我喜欢说的:现在编码,以后再优化。
不要对个别优化进行微观管理。编译器编写者是非常聪明的人 - 只需将它们全部打开,除非您认为不需要这样做。您的时间最好花在优化代码(提高函数的算法复杂性等)上,而不是摆弄编译器选项。
我的其他建议,使用不同的编译器。英特尔作为优化编译器享有盛誉。VC 和 GCC 当然也是不错的选择。
您可以查看具有不同编译选项的生成代码,看看哪个最快,但我知道现在很多人没有这样做的经验。
因此,对应用程序进行概要分析会很有用。如果有明显的部分需要速度,请添加一些代码以执行一千或一千万次,并utime()
在可用时使用它。循环应该运行足够长的时间,以使其他间歇性运行的进程不会影响结果——十到二十秒是一个流行的基准范围。或者进行多次计时试验。编译不同的测试用例并运行它以查看最有效的方法。
花一两个小时玩优化选项很快就会发现大多数效果都很小。然而,同样的时间花在思考算法的本质和进行小的更改(代码删除特别有效)上通常可以大大缩短执行时间。