Python 性能优化


循环的优化

有多重循环的尽量将内层的计算提到上一层。
使用 xrange 比 range 节省大量的系统内存。
可以不用循环的时候就不要用循环,比如 改用map()


字符串的优化

字符串数量小的时候,"+"和格式化都很快,join是最慢的,字符串数量大的时候,join比较快。

所以:
简单字符串连接时,直接使用"+"
有格式化需求时,使用"%"
当有大量字符串时,使用"str.join"


列表的优化

成员的查找访问等操作,字典比列表快,查找字典的时间复杂度为O(1),查找列表为O(n)。
涉及到求 list 交集、并集或者差的问题,转换为 set 来操作比较快。
使用列表解析(list comprehension)和生成器表达式(generator expression)列表解析要比在循环中重新构建一个新的 list 更为高效。


其他技巧:

如果需要交换两个变量的值使用 a,b=b,a ,而不是借助中间变量 t=a;a=b;b=t

使用级联比较 "x < y < z" 而不是 "x < y and y < z";


if done is not None 比语句 if done != None
if is Trueif == True
while 1 要比 while True 更快


如果存在条件表达式 if x and y,在 x 为 false 的情况下 y 表达式的值将不再计算。
所以对于and,应该把满足条件少的放在前面,而对于or,把满足条件多的放在前面。



资料:
Python 代码性能优化技巧
Python性能优化的20条建议

20171230

你可能感兴趣的:(Python 性能优化)