这个网站上已经存在很多性能问题,但是我发现几乎所有这些都是特定于问题且相当狭窄的问题.几乎所有人都重复这些建议,以避免过早优化.
我们假设:
我在这里寻找的是在一个关键算法中挤出最后几个百分点的策略和技巧,除此之外别无他法.
理想情况下,尝试使答案语言不可知,并在适用的情况下指出建议策略的任何缺点.
我将使用我自己的初步建议添加回复,并期待Stack Overflow社区可以想到的任何其他内容.
我正在寻找程序员在C中可以做什么,它可以确定生成的目标文件的性能和/或大小.
例如,
1.将简单的get/set函数声明为inline可能会提高性能(以更大的占用空间为代价)
2.对于不使用循环变量本身值的循环,倒计时到零而不是计数到一定的价值等
看起来编译器现在已经发展到了一个"简单"技巧(如上面的两点)根本不需要的水平.编译期间适当的选项无论如何都可以完成工作.哎呀,我还看到了关于编译器如何处理递归的帖子 - 这非常有趣!那么我们还要做什么呢?:)
我的具体环境是:GCC 4.3.3重新针对ARM架构(v4).但是对其他编译器/处理器的响应也是受欢迎的,并且将被扼杀.
PS:我的这种做法违背了通常的"代码优先!然后基准,最后优化"的方法.
编辑:就像它发生的那样,在发布问题之后我发现了一个类似的帖子:我们还应该优化"在小"吗?
我有5个函数被调用10000次(平均).所有这些都修改/使用某些变量.
我知道拥有全局变量是不好的做法.但是出于性能的考虑,将它们保持全局而不是传递它们是否有意义 - 特别是当我多次进行函数调用时?
或者我在性能方面不会获得太多收益?