Python-性能优化

多种方式进行 Python 性能优化对比。

测试代码

1
2
3
4
5
def calEmbDistance(emb1, emb2):
for i in range(100000):
results = np.subtract(emb1, emb2)
np.sqrt(np.dot(results, results))
return np.sqrt(np.sum(np.square(np.subtract(emb1, emb2))))

优化方式

1
2
3
np.dot 替换 np.sum(np.square)
numexpr 替换 numpy
使用 cython 无修改编译

运算速度对比:

1
2
3
4
5
原始:1.983642
numba:2.417647
numexpr:2.240532
np.dot:1.679310
cython:1.579717

总结

总的来说,cython 优化最好,如果加上类型的静态定义,会更快,而 numba 和 numexpr 则并没有加速,反而更慢,np.dot 最方便,无需做任何其他配置,能使用的时候一定要使用。