Cython实践:N-body模拟
本章我们将通过N-body模拟代码来更好的理解Cython在实际中的使用。(具体例子省略)
通过实例我们知道如何将纯Python代码转化为Cython代码进行提速,步骤如下:
- 1.测试纯Python代码,定位性能瓶颈代码
- 2.重点检查嵌套的for循环、计算密集型操作和嵌套的Python容器,所有的这些操作都很容易通过Cython转化为更加高效的C级别的结构
- 3.使用Cython定义C语言数据结构替换Python的数据结构,如果有必要,将Python的数据转化为C语言的数据
- 4.重点使用C语言级别的数据结构,从嵌套循环中尽可能的移除Python的数据结构,确保所有使用嵌套循环的变量(包括循环变量本身)都是静态变量
- 5.测试代码确保修改不会改变语义,再一次测试性能,如果效果不理想,使用Cython测试工具找出低效的代码
- 6.必要时重复上述操作
记住帕累托原理(80/20法则),我们只需要使用Cython修改20%的代码解决80%的性能问题即可,剩下的80%代码还是Python代码。