欢迎访问
这是个实用的Python网站

Python代码的执行性能分析

春节过后,大家都陆续返回工作地上班了吧,我今天第一天上班,在地铁上用手机总结分享时忘了时间,坐过了一站,地铁上人也挺多,大家又逐渐回归到上海的快节奏生活中。

不管是公司的产品还是自己的项目,如果要做强做大,必须要关注性能问题,你的代码性能差,在大神眼里,就是不规范的代码了。

(图片来源:微信朋友圈)

你平时有关注你的代码的性能问题吗?今天通过几个简单的小栗子,给大家来讲讲性能耗时那些事儿。

打印1000以内数的列表

打印1000以内的数并组成一个 list 列表,这道题不难吧?你能用四种方法解答此题吗?借此机会正好复习下你的基础。

方法1:for 循环 & 连接符
方法2:for 循环 & append 添加
方法3:列表表达式
方法4:Python 内置函数

都答出来了吧?没全部想到的同学得要好好复习下基础了。

哪个性能最优?

以上四种方法哪种代码的性能最优呢?先想想.

 

答案是:

方法4:Python 内置函数

为什么是这种方式性能最优呢?我们分别计算出代码的运行时间就会一目了然了。

计算代码执行时间,我们可以用 timeit 模块里的方法。timeit 模块可以用来测试一小段 Python 代码的执行速度。

timeit 模块定义了接受两个参数的 Timer 类。两个参数都是字符串。第一个参数是你要计时的语句或者函数。 传递给 Timer 的第二个参数是为第一个参数语句构建环境的导入语句。 从内部讲, timeit 构建起一个独立的虚拟环境, 手工地执行建立语句,然后手工地编译和执行被计时语句。

一旦有了 Timer 对象,最简单的事就是调用 timeit(),它接受一个参数为每个测试中调用被计时语句的次数,默认为一百万次,方法返回执行代码的耗时,返回的是 float 类型的秒数。

所以它的用法格式如下:

这里为了比较时间,我把执行次数扩大 10000 倍。

把上面函数代码加上一下代码同时执行。

执行结果如下:

结果出来了吧,最快的是用内置函数 list range 方法,执行 10000 次后耗时 0.17 秒,亚军是列表表达式,0.42 秒,耗时最长是用加号连接符,耗时 18 秒。

所以,结论是:调用 Python 内置函数执行速度是最快的,内置函数的性能是最优的。所以当你的模块被大量调用,尽量用内置函数搞定。

平时大家爬虫时往列表里添加数据也是用得比较多的吧,往列表里添加数据用的多是 append() 和 insert(),这个两个方法有区别吗?有。直接看执行效果。

运行结果如下:

所以,append() 方法是从尾端添加元素,而 insert() 方法是从顶端添加元素的。

他们的区别不仅于此,性能上有区别吗?我们用上面的方法看看便知。

为了看清楚效果,我们把 range 内的次数改成 10000。

看看执行耗时:

差距太明显,直接 KO,所以 append 从尾端添加元素的效率远远高于 insert 从顶端添加元素的效率。

希望通过今天的小栗子,大家能明白性能的重要性,当然,这只是性能优化的冰山一角,以后我们慢慢再聊。

 

赞(0) 打赏
未经允许不得转载:Python知识圈 » Python代码的执行性能分析

评论 抢沙发