过程法则打破函数层次 。对于(非递归地)调用自身的函数,通常可以通过将其改写为内联版本并固定传入的变量来缩短其运行时间 。
递归函数转换 。递归函数的运行时间往往可以通过下面的转换来缩短 。将递归重写为迭代,通过使用一个显式的程序栈将递归转化为迭代 。(如果函数仅包含一个对其自身的递归调用,那么就没有必要将返回地址存储在栈中) 。
如果函数的最后一步是递归调用其自身,那么使用一个到其第一条语句的分支来替换该调用,这通常称为消除尾递归 。解决小的子问题时,使用辅助过程通常比把问题的规模变为0或1更有效 。
并行性 。在底层硬件条件下,我们构建的程序应该尽可能多地挖掘并行性 。
表达式法则编译时初始化 。在程序执行之前,应该对尽可能多的变量初始化 。
利用等价的代数表达式 。如果表达式的求值开销太大,就将其替换为开销较小的等价代数表达式 。用加法替代乘法,降低数组元素上的循环强度 。很多编译器进行了这一优化 。这种方法可以推广为一大类增量算法 。
消除公共子表达式 。如果两次对同一个表达式求值时,其所有变量都没有任何改动,那么我们可以用下面的方法避免第二次求值:存储第一次的计算结果并用其取代第二次求值 。
成对计算 。如果经常需要对两个类似的表达式一起求值,那么就应该建立一个新的过程,将它们成对求值 。如果insert函数的参数已经在集合中,C++代码就使用不完成任何操作的insert替代这两个函数 。
利用计算机字的并行性 。用底层计算机体系结构的全部数据路径宽度来对高开销的表达式求值 。
看完这6大代码调优法则,是不是恍然大明白的?有时候,你不是不够努力,而是用错了方法,学好《编程珠玑》中的方法论,更有效率地攀登程序员进阶之路!
编程珠玑 第2版作者:[美]乔恩·本特利(Jon,Bentley)
京东
本书是计算机科学方面的经典名著 。书的内容围绕程序设计人员面对的一系列实际问题展开 。作者以其独有的洞察力和创造力,引导读者理解这些问题并学会解决方法,而这些正是程序员实际编程生涯中至关重要的 。
本书的特色是通过一些精心设计的有趣而又颇具指导意义的程序,对实用程序设计技巧及基本设计原则进行了透彻而睿智的描述,为复杂的编程问题提供了清晰而完备的解决思路 。本书对各个层次的程序员都具有很高的阅读价值 。
【如何优化代码,代码调优的6大法则?】 好了,这篇文章的内容蜀川号就和大家分享到这里!
- 50岁的人除了跑步快走 老年人的性功能如何维持
- 血氧仪|1380元血氧仪成本仅几十块是真的吗 如何看待血氧仪涨价
- 烤箱|如何用烤箱烤红薯 烤红薯注意事项
- 中医如何做到两者兼顾养生调理 阴虚和阳虚同时存在吃什么药
- 老大|老大就该让着弟弟妹妹吗 生二胎如何考虑大宝的感受
- 甲状腺疾病该如何治疗 艾灸图片高清图片大全
- 中医是如何治疗传染病的 八个偏方治好尿毒症
- 如何看一块石头里面有没有玉 怎么判断是玉还是石头
- 中医也无法根治糖尿病吗 糖尿病如何治疗哪种好用
- 菜板|菜板发霉怎么办 如何清洁砧板霉菌