我可以用C重写我昂贵的pygame函数吗?

5jdjgkvh  于 2023-03-22  发布在  其他
关注(0)|答案(2)|浏览(115)

我是否可以在我的pygame游戏中找到昂贵的函数(例如,A* 寻路),并将它们重写为here的扩展?
这样做有没有速度上的好处?有没有更好的(python)解决方案?
我问这个问题是因为我刚开始学习C,因为不相关的原因,当我回到Python和pygame时,这可能是一个好主意。

t3psigkw

t3psigkw1#

这样做是否有速度优势?
如果不知道你到底在做什么,就不可能说出来,但一般的答案是“很有可能”。
有没有更好的解决方案(Python)?
再说一次,这不可能说。比什么更好?
如果您正在使用数值数组,那么第一步可能应该使用NumPy
一旦你做到了这一点,除了在原始C中编码扩展之外,还有多种途径可以加速事情:

  • Cython:用类似Python的语言编写扩展;
  • numexpr:数组表达式的快速计算引擎。

最后,如果您发现自己正在编写C或C++扩展,请考虑使用SWIGBoost.Python

cxfofazt

cxfofazt2#

你可以使用cProfile来查找代码中开销最大的函数。我很确定你将一些代码迁移到C语言后,你会看到性能的提高。从我的测试来看,根据你的代码,它可以是2倍到200倍的提高。
最简单的方法是将昂贵的函数移到单独的模块中,添加变量声明并用Cython编译它们,然后将它们导入到主程序中,就像它们是python模块一样。
这里有一个很棒的教程,你可以使用不同的方法来优化你的代码,包括profiling和Cython:
http://ianozsvald.com/HighPerformancePythonfromTrainingatEuroPython2011_v0.2.pdf

相关问题