【发布时间】:2011-12-25 09:56:20
【问题描述】:
我有一些用 C 语言编写的用于游戏项目的函数。这些函数被调用很多次(大约每秒 2000-4000 次)。这些函数是用 C 语言编写的,以实现原始速度。
现在,我将这些函数包含到 Python 中的最简单方法是使用 ctypes。另一种方法是围绕这些函数编写 Python 的 C 扩展(这需要相当多的额外工作)。于是我就想,不包括DLL的初始加载,ctypes的开销有多大?
我使用的是 Python 2.7(标准 CPython 版本),我不想使用像 Cython 这样的外部库。
我知道之前有人问过这个问题,但我没有看到太多关于两个选项之间性能比较的信息。
【问题讨论】:
-
好吧,PyPy 的 JIT 可以为
ctypes调用生成非常棒的代码,因为一两次发布。你可能想试一试。我不会将此作为答案发布,因为我手头没有确凿的数据,并且不清楚切换口译员是否适合您。 -
我希望开销是相似的。
-
@Delnan:这是一款我要发布的游戏——也将发布到 linux。我不能要求我的用户安装 PyPy。
-
来自python官方文档:“请注意,如果您的用例是调用C库函数或系统调用,您应该考虑使用ctypes模块而不是编写自定义C代码。ctypes不仅让您编写 Python 代码以与 C 代码交互,但它比编写和编译通常将您与 CPython 联系在一起的扩展模块在 Python 实现之间更具可移植性。