在 python 中重写 c/c++ 程序的一部分

Rewrite part of a c/c++ program in python

我正在尝试在 python 中为一个名为 Blender 3D 的流行 3d 程序开发一个插件界面。插件接口的目的是通过python.

扩展程序的一些功能

现在我的问题是我正在尝试评估性能影响。我将用 python.

中编写的内容替换用 c 代码编写的现有功能

我担心这可能会降低应用程序的速度,因为我要替换的功能是实时执行的,而且必须非常快。它由一个简单的 c 函数组成,该函数只是将一些多边形分割成三角形。

所以我执行的操作是处理通常不超过 30 或 40 个输入点的数据。我对它们执行的操作最多具有 log(n) * n^2.

的复杂性

但我每秒会创建大量 python 个对象,所以我已经准备好实施池化以回收对象。

现在我主要担心 python 代码会 运行 比 c 代码慢 100 倍,从而降低应用程序的速度。我应该担心吗?

最多我将在单个 python 函数调用中进行 8500 次计算。每次渲染应用界面都会调用该函数

使用c还是python的问题要看你作品的用途了。这是搅拌机开发人员将在搅拌机开发中接受的功能吗?你认为很多搅拌机用户会想要使用它吗? python 插件允许您在主 blender 开发之外开发您的作品,并允许许多用户访问它,而要求用户编译自己的版本的 c 代码补丁将减少用户。

您还可以考虑将您的 C 代码编译成二进制库,该库包含在 python 插件中并作为 python 模块加载。查看 Pyroevil 使用 cython - molecular and cubesurfer, some pre-built binaries are available on his main website 创建的两个插件。我不确定使用 cython 是否使 python 模块的创建更容易,您也可以仅将 cython 用作 python 和您的库之间的粘合剂。