-
.将全局范围的代码放入函数中,使用函数大概能带来15%~30%的性能提升,这种速度差异是由于局部变量和全局变量的实现方式(使用局部变量要更快些);
-
尽量去掉属性访问,每一次使用(.)操作符来访问属性时会带来额外的开销,它会触发特定的方法,比如__getattribute__()和__getattr__(),这些方法会进行字典操作操作;
import math
def compute_roots(nums):
sqrt = math.sqrt
result = []
result_append = result.append
for n in nums:
result_append(sqrt(n))
return result
- 对于频繁访问的名称,通常将这些名称变成变成局部变量可以加快程序运行;
class SomeClass:
def method(self):
value = self.valye
for x in s:
op(value)
-
避免比必要的抽象,任何时候当你使用额外的处理层(比如装饰器、属性访问、描述器)去包装你的代;
-
使用内置的容器,内置的数据类型比如字符串、元组、列表、集合和字典都是使用 C 来实现的,运 行起来非常快;
-
避免创建不必要的数据结构和复制;
-
用dict创建字典比直接用{}创建要慢;
-
最重要的一点的优化算法复杂度。