高性能的Python扩展:第二部分
这篇文章是这系列文章的第二篇,我们的关注点在使用NumpyAPI为Python编写C扩展模块的过程。在第一部分中,我们建立了一个简单的N体模拟,并发现其瓶颈是计算体之间的相互作用力,这是一个复杂度为O(N^2)的操作。通过在C语言中实现一个时间演化函数,我们大概能以大约70倍来加速计算。如果你还没有看过第一篇文章,你应该在继续看这篇文章之前先看一下。在这篇文章中,我们将牺牲我们代码中的一些通用性来提升性能。Wrold是存储N体状态的一个类。我们的模拟将演化一系列时间步长下的状态。在开始模拟时,N体被随机分配质量m,位置r和速度v。对于每个时间步长,接下来的计算有:1.合力F,每个体上的合力
用户评论