对于程序的运行,人直观能够感受到的是程序运行的时间。当然数据规模不大的时候,0.1秒和0.8秒的区别是感受不到的。
对于长久维护的程序而言,数据量增长到一定阶段的时候,就很有必要对程序进行优化。有时候甚至不是必要,而是一定,因为等不了那么长的时间。
程序优化的通用方法:
方法 | 例子 | 备注 |
---|---|---|
不改变程序的需求与具体的功能 | 例如计算的需求是:求的根 | 一般就是一个纯技术的问题。可以通过 1)针对这个具体的问题查看是否有更加好的问题解决途径,这个不一定所有需求都有。这个例子正好就有。假设一开始是用二分法去求解的,你发现想要达到小数点后6位的精度很费时间。后来通过自己领域的专业知识,你发现居然有解析解(就是求根公式),于是就达到了很好的优化效果。 2) 去学习自己熟练的编程语言的一些高级用法。例如你可以除法换加法,加法换乘法,或者避开一些循环什么的,或者一次循环多计算点东西,或者高效利用一些数据结构,再或者用空间换时间(例如多用哈希,多全局初始化一些变量,避免反复创建),还有多学一些底层操作(例如位运算) 3) 还有就是更换编程语言 当然这里的难度是逐级递增的 |
通过审视自己的需求,从需求本身发现可以优化的地方 | 同样是上面的例子 | 在这个例子中,一般的求解的话就是得到两个具体的实数根。但是你可以通过实际的应用场景发现我们不需要那么精确。在具体的工程应用当中,我只要得到一个整数就好了,而且告诉我它是否在[-10,10]区间内就行。这个时候就是从需求本身进行优化。 |