猿问

Cython比纯Python快或慢

我正在使用几种技术(NumPyWeaveCython)执行Python性能基准测试。代码基本上在数学上所做的是C = AB,其中A,B和C是N x N矩阵(注意:这是矩阵乘积,而不是逐元素的乘法)。

我已经编写了5种不同的代码实现:

  1. 纯Python(在2D Python列表中循环)

  2. NumPy(二维NumPy阵列的点积)

  3. 内联编织(C ++遍历2D数组)

  4. Cython(在2D Python列表上循环+静态键入)

  5. 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的表现使我哭泣。我的整个代码分为两个文件。一切都是自动化的,您只需要运行第一个文件即可查看所有结果。有人可以帮我指出我可以做些什么以获得更好的结果吗?


小唯快跑啊
浏览 216回答 1
1回答
随时随地看视频慕课网APP

相关分类

Python
我要回答