浅谈如何提高代码执行速度 | 您所在的位置:网站首页 › 写代码太慢 › 浅谈如何提高代码执行速度 |
这一节我们来谈谈如何提高代码的执行速度,评价一个代码的好坏有很多方面,比如程序执行速度,健壮型,占用内存大小等等,其中最重要的还是执行速度,试想一下,你写的一个代码,执行要几分钟,别人写的同样的功能,几秒就出结果了,孰好孰坏,一目了然。 诚然,如何写一个执行速度很快的代码,其实是很考验编写代码的人的代码知识功底,比如要学好数据结构与算法,了解计算机底层工作原理。本文不打算深究,只从以下几个浅显方面举例来说明如何提高代码速度。 1:编写高效的算法 有时候代码执行速度太慢,可能是因为我们写的算法本生就是低效的,以下一个斐波那契数列为例说明不同算法对程序执行速度的差别。 斐波那契数列是指:数列中的每一项,都是前面两项的和,其中第一项和第二项都等于1。现在我们编写一个程序来求任意一项的值。 我们很容易用递归法写出如下的代码: #递归法求解斐波那契数列 def f(n): if n==1 or n==2: return 1 else: return f(n-1) + f(n-2) a=time.time() f(30) b=time.time() print("用时:") print(b-a)程序输出执行时间为:0.1196秒,了解熟悉递归法的同学们看到上面代码可能就会很容易知道,上面的递归法求解数列中的一项时,其实程序在执行时候有很多重复次数,比如计算f(6), f(6)=f(5)+f(4),而f(5)=f(4)+f(3),这里面计算了一次f(4),而后面的f(4)又要再计算一次而且随着n的增大,重复的次数更多,而且还容易有溢栈的可能。 下面我们用类似动态规划法的算法来求解他,每次算出一项,即保存在一个数组里,求解时,如果数组里面有这个值,直接取出,没有的话,才去计算,代码如下: def f(n,a): if n==1 or n==2: return 1 else: if a[n]==0: temp=f(n-1,a) + f(n-2,a) a[n]=temp return a[n] temp=[0 for i in range(50)] a=time.time() f(30,temp) b=time.time() print("用时:") print(b-a)程序输出执行时间为0.0000169秒,几乎可以忽略不计,所以一个高效的算法会给程序带来很大的便利。 2:利用语言的关键字 一下以c语言为例子来讲解,考虑下面这样一个简单的循环: int i; for (int i=0;i |
CopyRight 2018-2019 实验室设备网 版权所有 |