Mic*_*ick 4 c++ windows optimization visual-studio-2008
我有一个非常大的程序,我一直在visual studio下编译(v6然后迁移到2008).我需要可执行文件尽可能快地运行.该程序花费大部分时间处理各种大小的整数,并且IO很少.
显然我会选择最大化优化,但似乎有很多事情可以做,而不是在优化的标题下,这仍然会影响可执行文件的速度.例如,选择__fastcall调用约定或将结构成员对齐设置为大数.
所以我的问题是:我是否应该使用其他编译器/链接器选项来使程序更快,而不是从"属性"对话框的"优化"页面控制.
编辑:我已经广泛使用了分析器.
Mic*_*and 12
要考虑的另一个优化选项是优化尺寸.由于更好的缓存局部性,有时大小优化的代码比速度优化的代码运行得更快.
此外,除了优化操作之外,在分析器下运行代码并查看瓶颈所在.使用优秀的分析器花费的时间可以在性能上获得重大收益(特别是如果提供有关代码的缓存友好性的反馈).
最终,你可能永远不会知道"尽可能快".你最终需要解决"这对我们的目的来说足够快".
你问的是哪些编译器选项可以帮助你加速你的程序,但这里有一些一般的优化技巧:
1)确保您的算法适合该作业.如果你编写一个O(shit平方)算法,那么编译器选项的数量不会对你有所帮助.
2)编译器选项没有硬性规定.有时优化速度,有时优化尺寸,并确保你的时间差异!
3)了解您正在使用的平台.了解该CPU的高速缓存如何运行,并编写专门利用硬件的代码.确保你没有到处跟踪指针来访问会破坏缓存的数据.了解可用的SIMD操作并使用内在函数而不是编写汇编.如果编译器肯定没有生成正确的代码(即以错误的方式写入未缓存的内存),则只编写汇编.确保对不会使用别名的指针使用__restrict.有些平台更喜欢你通过值而不是引用来传递矢量变量,因为它们可以放在寄存器中 - 我可以继续这样做但这应该足以指出你正确的方向!
希望这可以帮助,
-Tom
归档时间: |
|
查看次数: |
2093 次 |
最近记录: |