我正在使用几种技术(NumPy,Weave和Cython)执行Python性能基准测试。代码基本上在数学上所做的是C = AB
,其中A,B和C是N x N
矩阵(注意:这是矩阵乘积,而不是逐元素的乘法)。
我已经编写了5种不同的代码实现:
纯Python(在2D Python列表中循环)
NumPy(二维NumPy阵列的点积)
内联编织(C ++遍历2D数组)
Cython(在2D Python列表上循环+静态键入)
Cython-Numpy(在2D NumPy数组上循环+静态类型化)
我的期望是实施2到5将比实施1快得多。但是我的结果却相反。这些是我相对于纯Python实现的标准化提速结果:
python_list:1.00
numpy_array:330.09
weave_inline:30.72
cython_list:2.80
cython_array:0.14
我对NumPy的表现感到非常满意,但是我对Weave的表现不太热心,而Cython的表现使我哭泣。我的整个代码分为两个文件。一切都是自动化的,您只需要运行第一个文件即可查看所有结果。有人可以帮我指出我可以做些什么以获得更好的结果吗?
相关分类