什么时候在C中重写Python模块是否有意义?

Nik*_*win 4 c python optimization

在我正在编写的游戏中,我使用了我编写的2D矢量类来处理对象的速度.由于屏幕上有很多物体,因此每帧都会调用很多次,因此我可以在其速度上增加任何增量.

它非常简单,主要由相关数学函数的包装器组成.在C中重写是非常简单的,但我不确定这样做是否会产生任何显着的差异,因为它实际上只是调用基础数学函数,加法,乘法或除法.

所以,我的问题是在什么情况下在C中重写是有意义的?你会在哪里看到显着的速度提升,在哪里可以看到合理的速度提升而无需重写大量的程序?

Eli*_*sky 14

如果你是矢量调整,首先尝试numpy.如果你明智地使用numpy的矢量操作函数,你可能会在离C不远的地方获得速度.

除此之外,你的问题非常具有启发性.如果您的代码太慢:

  1. 简介 - 你有可能在Python中改进它
  2. 使用正确优化的基于C的库(在您的情况下为numpy)
  3. 尝试 psyco
  4. 尝试重写部分 cython
  5. 如果所有其他方法都失败了,请在C中重写


Mar*_*ett 9

先测量然后优化

  • 阿门.没有基准的优化只是伏都教.使用voodoo进行设计会导致软件损坏.也就是说,开发一些关于在哪里进行基准测试的直觉很重要,这就是这个问题所要求的. (5认同)