我正在尝试使用Cython来编写我的项目代码。
我的计划是用.dll编写C++,并通过Cython从Python调用它们。因此,我可以在保持C++开发的简单性的同时,具有很高的计算性能。
当我更进一步的时候,我有点困惑。据我所知,Cython将python代码封装到C中。由于C具有更好的计算性能,所以性能得到了提高。我说得对吗?
如果我就在上面,那么是否有必要用.dll编写C++并从C++调用它以提高性能?
如果我编写Python代码并将其包装到C中,然后从python调用它,那么它是否比调用用.dll编写的C++更好呢?
发布于 2013-10-04 13:36:56
首先,让我消除你似乎有一些误解。
不,不,不。这就像说“以规定的速度驾驶一辆车比让F1赛车手以同样的速度驾驶一辆车要慢得多”。只是没什么意义。当Python加载库时,它加载和处理它的方式类似于内核加载和处理它的方式(实际上,在Python的例子中,内核也是这样做的)。事实上,这种“双加载”(这不是动态库的最初设计)可以减缓库的速度。我要强调的是,这是一个微小的差别,不应该关心普通的程序员。
它将python代码编译成C,然后编译成一个动态库,供Python以后加载。这可能会在一定程度上优化Python代码,并使您能够与原子C数据类型进行接口,并在上面使用Python的神奇调料。虽然这很酷,但它并没有给您的代码任何“神奇”的能力。
我还想补充一点,一些测试已经证明,Java实际上比C、C++、Python和其他语言更快,因为JVM是非常优化的。这并不意味着您应该使用Java (因为它还有其他问题),但是它应该给出透视图。
https://stackoverflow.com/questions/19181984
复制相似问题