4

我是否可以在我的 pygame 游戏中找到昂贵的功能(例如,A* 寻路)并将它们重写为此处概述的扩展?

这样做有速度优势吗?有更好的(python)解决方案吗?

我问这个问题是因为我刚刚开始学习 C 的原因不相关,当我想到这可能是我回到 Python 和 pygame 时的好主意。

4

2 回答 2

8

这样做有速度优势吗?

如果不知道自己在做什么,就不可能说出来,但一般的答案是“很可能”。

有更好的(python)解决方案吗?

再次,这是不可能的。比什么更好?

如果您正在使用数值数组,那么第一步可能应该是使用NumPy

完成此操作后,除了在原始 C 中编码扩展之外,还有多种途径可以加快速度:

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

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

于 2012-05-24T13:30:22.847 回答
4

您可以使用 cProfile 查找代码中最昂贵的函数。我很确定在将一些代码移至 C 之后,您会看到性能改进。根据我的测试,它可以是 2 倍到 200 倍的任何改进,具体取决于您的代码。

实现这一点的最简单方法是将昂贵的函数移动到单独的模块中,添加变量声明并使用 Cython 编译它们。然后,您可以将它们导入到您的主程序中,因为它们是 python 模块。

这是一个很棒的教程,介绍了可用于优化代码的不同方法,包括分析和 Cython:

http://ianozsvald.com/HighPerformancePythonfromTrainingatEuroPython2011_v0.2.pdf

于 2012-05-24T13:41:44.113 回答