程序的效率分两部分:时间效率和空间效率。 时间效率 : 指的是程序运行的速度 空间效率 : 指的是程序占用内存或者外存的大小 对于这两点的把握,我们没有明确的方法。这里给出一些能够达成共识的规则,大家在今后自己编码的时候,可以通过这些规则来衡量自己的代码是否符合要求。 规则1:不要一味地追求程序的效率 如果追求程序效率需要付出降低正确性、可靠性、健壮性、可读性等质量代价,那么可以放弃这部分效率的提高。 规则2:优先提高全局效率 只有整个程序的执行效率提高才有意义,把时间和精力放在某一个不常被调用的小模块优化上得不偿失。 规则3:针对瓶颈部分优化 在实际开发工作中,我们经常遇到一些程序执行时间过长,需要优化。有些人上来就开始逐行检查代码,把认为可能影响效率的地方都尽量修改一遍。这样做不仅浪费时间,更重要的是,常常修改一遍后依然看不到明显的效果。 这种情况下,正确的方法是先找出限制效率的“瓶颈”,在这个部分做有针对性的优化。这么做才事半功倍。 规则4:先优化数据结构和算法,再优化执行代码 程序的两大要素是算法和数据结构,它们贯穿于程序的始终。因此,对它们的优化能够起到意想不到的良好效果。 规则5:时间效率和空间效率的矛盾 大多数时候,时间效率和空间效率是对立的。这就是程序设计中两个很重要的方**,一个是“以空间换时间”,另一个是“以时间换空间”。此时应当分析那个更重要,作出适当的折中。 早间年,硬件成本比较高,人们大多都采用以时间换空间的策略,花费一些时间,减少内存开销。如今,内存条的价格已经非常便宜了,人们注重的`是软件的友好性,因此大部分时候都是用空间换时间。
|