[技巧篇] 循环代码优化技巧。

640

640

本文字数:1178 字

阅读本文大概需要:3 分钟

00.写在之前

「代码优化」应该是我们时刻记在心里的一件事情,从一开始就建立一种正确的编程观念,养成一种好的编程习惯,避免一些低效弱智的做法。

虽然现在计算机越来越快,内存越来越大,很多人会觉得一顿操作猛如虎之后可能才优化了 1 s,实在太微不足道了,但是可别忘了,你以后编的程序可不是给你一个人用的,可能是服务器程序,你这个慢 1 s,一天来个百万次千万次的请求,那对于你的运行效率来说,那是拖慢了成千上万倍。

尤其是在「循环」上,我们更要注意,因为很多时候问题就是出现在循环上。关于如何在循环上考虑优化代码,就是下面我要介绍的内容。

01.循环代码优化

技巧 1:减少循环内部不必要的计算

什么算是不必要的计算,就是指那些无论放在循环里面还是放在循环外面都不会改变程序运行结果,对于这样的能放到循环外面的一定要放到循环外面。

技巧 2:嵌套循环中,尽量减少内层循环的计算

对于循环来说,越往里面计算的频率越高,我们都知道在循环中时间复杂度的计算是乘法的关系,所以也是能往外放的尽量往外放。

这里我们来看一个例子,假设我有一段下面这样的代码:

import time

start = time.time()
for i in range(1000):
     res = []
     for j in range(10000):
         res.append(i * 1000 + j * 100)
end = time.time()
print('befor 耗时 {}'.format(end - start))

运行一下,输入的时间差为:

befor 耗时 2.323680877685547

但是我们仔细看一下上述的代码,根据技巧 2 中所说,可以发现对于 i * 1000 来说,完全可以先在外面计算好了,直接把结果拿进来用就可以,那么我们稍微修改一下:

import time

start1 = time.time()
    for i in range(1000):
     res = []
     n = i * 1000
     for j in range(10000):
         res.append(n + j * 100)
end1 = time.time()
print('after 耗时 {}'.format(end1 - start1))

同样运行代码,输出的结果如下所示:

after 耗时 1.914416790008545

相比较可以发现,同样一个结果的代码,只是一个简单的变化,代码的效率就提高了 20%。所以在循环里,一定要细扣哪些是可以丢在外面的。

技巧 3:尽量使用局部变量

尽量使用局部变量来代替全局变量,因为局部变量查询比较快,有助于效率的提升。

技巧 4:使用 join() 连接字符串

这个技巧呢不仅适用在循环里,可以说在程序的任意地方都适用。

用 join() 来代替 ‘+’ 去连接字符串,因为 ‘+’ 拼接会产生新的字符串对象,如果你循环 10000次,那就会产生 10000 个对象,而 join 就不会,它只会产生 1 个对象,用这 1 个对象去重复计算。

640?wx_fmt=gif

奇怪的 Python 整数缓存机制。

[超详细] 手把手带你发布自己的专属模块!

无处不在的「单例设计模式」

直到面试被问到什么是「共享引用」,我才发现对于它的一无所知...

640?wx_fmt=jpeg

?扫描上方二维码即可关注

发布了608 篇原创文章 · 获赞 5913 · 访问量 88万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 酷酷鲨 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览