有关性能优化,我们都知道”过早的性能优化是程序设计中的万恶之源(Donald Knuth)”,因为性能优化可能打破程序的可读性、可维护性甚至正确性,所以在进行性能优化的时候必须三思而后行。
在性能优化之前我们必须清楚的了解到了性能的问题确切发生在什么位置,如果不知道哪些地方出问题就开始修理可能会导致大的时间浪费。
举上段时间的一个bad case,我们的程序发现性能上的问题,简单Review代码后,我立刻发现有个优化的方案,但是几乎要重构一部分的代码,并且增加了整个代码的复杂度。花了两天的时间终于搞好了,运行了下发现性能提升有限。再仔细一看,以前代码的有个地方逻辑有问题,导致了这两个版本的都存在性能问题。花了两分钟修改好后,发现第一个版本性能也已经可以接受,并不需要那个新的版本。没有仔细的分析问题瓶颈导致了白白浪费了两天的开发时间。所以分析性能问题,就像医生要治牙痛一样,一定要找到导致问题的根源,不要拔光了牙才发现疼的是哪一颗。