程序优化的5个方向
程序优化的5个方向 80/20法则:程序执行中,80%的时间消耗在20%的代码上。 优化前,我们首先得找到这20%的关键路径; 各种语言都有专门的工具来找到这20%的关键路径,比如C++经常用到的gprof; 参考 《C++的性能优化实践》 在关键路径上对耗时的计算进行优化; 主要的优化方向为: 减少重复计算、预先计算、延后计算、降低计算代价、不计算; 减少重复计算 典型的例子如缓存,将之前相同的计算(查数据库,读写文件)存下来,等待下一次继续使用; 适用场景:计算结果有有效期,过段时间后需要再次计算; 预先计算 对于关键路径中比较耗时的计算,预先计算出来,节省每次计算的成本; 预先计算出对照表 关键路径中需要用到的映射关系对照表,将对照表预先计算,在关键路径中直接取用; 将计算提前到初始化期间 比如,内存分配耗时,将其提前到初始化的时间分配,建立内存池; 将计算提前到编译期间 比如:使用常量表达式,在编译期间将最终值计算出来,节省这部分的运行时开销; 相关技术:模版元编程; 适用场景:计算出来的值一直有效,无需再次计算; 延迟计算 将计算耗时延迟到后期,这样,对于异常情况或其它分支情况,在中途就转换,不用再计算; 有较多分支条件 将最耗时的计算延后,这样,可能很多场景在中途就转到其它分支上,不用计算; 判断条件中的技巧:a||b a&&b 如果判断条件比较耗时