Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重写部分c/c++;python程序_Python_C++_C_Blender - Fatal编程技术网

重写部分c/c++;python程序

重写部分c/c++;python程序,python,c++,c,blender,Python,C++,C,Blender,我正在尝试用python为一个流行的3d程序开发一个插件接口,名为Blender3D。插件接口的目的是通过python扩展程序的某些功能 现在我的问题是,我正在尝试评估性能影响。我将用python编写的东西替换用c代码编写的现有功能 我担心这可能会减慢应用程序的速度,因为我要替换的功能是实时执行的,而且必须非常快。它由一个普通的c函数组成,该函数只将一些多边形分割成三角形 因此,我在数据块上执行的操作通常不超过30或40个输入点。最多我对它们执行的操作的复杂性是log(n)*n^2 但我将每秒创

我正在尝试用python为一个流行的3d程序开发一个插件接口,名为Blender3D。插件接口的目的是通过python扩展程序的某些功能

现在我的问题是,我正在尝试评估性能影响。我将用python编写的东西替换用c代码编写的现有功能

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

因此,我在数据块上执行的操作通常不超过30或40个输入点。最多我对它们执行的操作的复杂性是log(n)*n^2

但我将每秒创建大量python对象,因此我已经准备好实现池来回收这些对象

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


在一次python函数调用中,我最多只能进行8500次计算。每次呈现应用程序界面时都会调用此函数。

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


您还可以考虑将c代码编译成二进制库,该库包含在python插件中,并作为python模块加载。请参阅Pyroevil使用创建的两个插件-和,一些预构建的二进制文件可在其上获得。我不确定使用cython是否会使python模块的创建更容易,您也可以只使用cython作为python和库之间的粘合剂。

您是否查看了
ctype
?您可以在Python中创建对象,并使用C代码进行计算。将Python对象传递给C程序有一些技巧,但是如果你熟悉C,它应该是“简单”的。解决这些担忧的常用方法就是剖析:看看你要替换的C++部件是否占用了大量的执行时间。如果不是,那么用Python替换它们不会太昂贵。而且,因为您有C++部分的剖析时间,所以您可以测量每个Python函数/方法/StAZA,并将其运行时间与等效的C++运行时间进行比较。换句话说,Python中的速度会慢一些,但我不知道它有多少,因为它取决于应用程序。code>numpy(和其他)运行得非常快,因为它有许多用C实现的函数。@harrypotfler还有一些部分用Fortran实现(C: