代码优化part1
分享最近看到的关于代码优化的一些技巧。
if 判断的短路特性
对于and,应该把满足条件少的放在前面,这样当对于大量判断时, 满足条件少的情况直接回导致其后其他表达式不会计算从而节约时间(因为 false and true 还是 false)
import timeit
s1 = “””
a = range(2000)
[i for i in a if i % 2 ==0 and i > 1900]
“””
s2 = “””
a = range(2000)
[i for i in a if i > 1900 and i % 2 ==0]
“””
print timeit.timeit(stmt=s1, number=1000)
print timeit.timeit(stmt=s2, number=1000)
运行结果如下:
➜ python test6.py
0.248532056808
0.195827960968
# 可以看到s2 表达式计算更快, 因为大部分情况都不满足 i>1900, 所以这些情况下, i % 2 == 0 也没有计算,从而节约了时间
同理对于or,把满足条件多的放在前面。
import timeit
s1 = “””
a = range(2000)
[i for i in a if 10 < i