首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么你的代码执行起来耗时较长?

第一时间关注 Python 技术干货!

阅读文本大概需要 6 分钟。

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

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

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

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

打印1000以内数的列表

打印1000以内的数并组成一个 list 列表,这道题不难吧?你能用四种方法解答此题吗?借此机会正好复习下你的基础,先不要看答案,自己先想想,然后再点击空白处就可以查看答案。

01

方法1:for 循环 & 连接符

点击空白处显示答案

02

方法2:for 循环 & append 添加

点击空白处显示答案

03

方法3:列表表达式

点击空白处显示答案

04

方法4:Python 内置函数

点击空白处显示答案

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

哪个性能最优?

以上四种方法哪种代码的性能最优呢?先想想,心中有自己的答案后再点击下方空白查看,看看正确答案是不是你心中所想。

00

哪种方法性能最优?

点击空白处显示答案

方法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 从顶端添加元素的效率。

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

觉得对你有帮助的大家帮忙点点好看,戳下鸡腿,也可以转发给更多的伙伴。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190213G0XU7V00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券