优化代码,有效使用内存总结
1. 在优化代码之前,一定要确信运行次数大到足以掩盖最初的加载开销, 意思是要在足够多的循环中测试,否则有些代码的运行时间太少,剖分软件无法捕捉到.
2. 将调用频率最高的函数以内联(inline)的形式加以实现是有意义的(即: 直接被调用的函数的代码插入到其他函数体内,从而节省一定数量的开销,如函数调用的开销). 3. 寻找热点即消耗时间最多的代码,提升速度最慢的代码给整个软件代码的提升是效果最好的,所以找准性能瓶颈代码很重要,时间要花在重要的事情上.不要做无用功. 4. 不要将代码优化与汇编语言混为一谈. 5. 在试图用汇编语言重写程序之前,先查看一下编译器生成的汇编代码并估算它的效率. 6. 如果编译器生成的汇编语言列表虽然显得不错,但是程序运行起来依然很慢,就可以考虑将它加载到一个反汇编工具之中去。 7. 如果可用的处理器指令能够实现比较高效的算法,那么就用不着去管编译器而可以着手去实现汇编语言代码。 8. 在开发汇编语言代码时,不管存在什么样的干扰,都应该给出一个精巧而高效的方案。 9. 编译器无法完成所有的优化任务。 10. 高级语言同样可以实现如汇编语言那样的优化工作。 11. 算法很重要,高效的算法比使用汇编语言更有效,汇编语言虽然很高效,但是维护困难,开发难度大,与编写的作者的水平有关。尽量使用高级语言+高效的算法提升程序的性能.一些技巧:
1. 用常量替换变量。 2. 在编译时刻计算变量的值。 3. 在编译的时刻计算函数值。 4. 删除没有用到的变量。 5. 删除变量的拷贝。 6. 删除没有用到的赋值。 7. 删除不必要的赋值语句. 8. 删除不必要的表达式. 9. 删除不必要的函数调用。 10. 做代数变换(减少除法,乘法)。 11. 优化子表达式。 12. 用算术运算替换条件跳转. 13. 删除冗余条件。 14. 删除那些肯定不成立的条件。 15. 循环展开。 16. 将不变代码移动到循环之外。 17. 用带后置条件的循环替换带有前置条件的循环。 18. 用减1指令替换循环增1指令。 19. 删除分支。 20. 删除永远无法调用到的代码(死码)。 21. 选择合适的编译器,不同的编译器对所产生的代码的优化程度是不一样的。合理掌握运行性能,代码紧凑度和开发代码所需要的时间.