原则1:不优化
原则2:不要优化那些不重要的部分(否则会降低可读性)
解决方案:
1. 使用函数,局部变量比全局变量快很多。尽量使用函数,如main()
2. 有选择性的消除属性访问。 如多用 from math import sqrt 而不要直接再程序中多次调用 math.sqrt(), 或直接声明局部变量。
import math def compute_roots(nums):
sqrt = math.sqrt
res = []
res_append = res.append
for n in nums:
res_append(sqrt(n))
return res # 微优化
a = { i:i**2 for i in range(1000) } # 较快
b = [dict(i=i**2) for i in range(1000) ] #较慢
3. 避免不必要的抽象,如装饰器,@property等
4. 使用内建的字符串,元组,列表,集合,字典等容器.
5. 避免不必要的数据结构或拷贝动作
6. 使用cPython或pypy等。
Ps: >> 优化之前,先要跑起来,先要有正确的算法!低复杂度的算法远比程序的优化更重要。