python - 什么时候用 C 重写 Python 模块有意义?

标签 python c optimization

在我正在编写的游戏中,我使用我编写的 2D vector 类来处理对象的速度。由于屏幕上有很多对象,所以每帧都会调用很多次,所以我可以提高它的速度。

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

那么,我的问题是在什么情况下用 C 重写才有意义?您会在哪些地方看到显着的速度提升,在不重写大量程序的情况下在哪些地方可以看到合理的速度提升?

最佳答案

如果你正在处理 vector ,请输入 numpy先试一试。如果您明智地利用 numpy 的 vector 操作函数,您的速度很可能会接近 C。

除此之外,您的问题很有启发性。如果您的代码太慢:

  1. 对其进行分析 - 您可能会用 Python 对其进行改进
  2. 使用正确优化的基于 C 的库(在您的情况下为 numpy)
  3. 试试 psyco
  4. 尝试用cython重写部分
  5. 如果一切都失败了,用C重写

关于python - 什么时候用 C 重写 Python 模块有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2096334/

相关文章:

mysql - 优化 MySQL 插入以处理数据流

python - 高效的概率树分支

python - Pandas - 根据列值移动某些行的特定列

python - 使用pytest的parametrize,如果一个测试用例失败,我如何跳过剩余的测试?

c - 如何在 AVX 或 SSE 指令中进行间接加载(聚集-分散)?

c - 使用链表从文件中获取数据

optimization - 如何在 AMD 芯片上使用英特尔编译器优化 C++ 程序

python - 如何反转 numpy.where (np.where) 函数

Python:二叉树类:通过遍历重建

c - 在 C 中操作数组