14

我正在尝试使用 Cython 对我的项目进行编码。

我的计划是用 C++ 编写 .dll,然后通过 Cython 从 Python 调用它们。所以我可以拥有C++的高计算性能,同时保持Python开发的简单性。

走得更远,我有点困惑。据我了解,Cython 将 python 代码包装到 C 中。由于 C 具有更好的计算性能,因此性能得到了提高。我在这点上正确吗?

如果我在上面,那么是否有必要用 C++ 编写 .dll 并从 Python 调用它以提高性能?

如果我编写 python 代码并将其包装到 C 中,然后从 Python 调用它,它的性能是否比调用用 C++ 编写的 .dll 更好?

4

1 回答 1

4

首先,让我来消除您似乎有的一些误解。

  • 从另一个程序调用库将加速您的库。

不,不,不,不,不,不。这就像说“以设定的速度驾驶汽车比让 F1 赛车手以相同的速度驾驶汽车要慢”一样有意义。这没有任何意义。当 Python 加载你的库时,它加载和处理它的方式类似于内核加载和处理它的方式(事实上,内核在 Python 的情况下也是这样做的)。事实上,这种“双重加载”(这不是动态库的原始设计)会减慢您的库。我要强调的是,这是一个微小的差异,不应该关心普通程序员。

  • Cython 将 Python 代码“包装”到 C 中

它没有。它将python代码编译成C,然后编译成动态库供Python稍后加载。这可能会在一定程度上优化您的 Python 代码,并让您能够与原子 C 数据类型进行交互,并在顶部使用 Python 的魔法酱。虽然这很酷,但它并没有给你的代码任何“神奇”的能力。

我还想补充一点,一些测试已经证明 Java(鼓声)实际上比 C、C++、Python 和其他语言更快,因为 JVM 非常优化。这并不意味着您应该使用 Java(因为它还有其他问题),但它应该提供观点。

于 2013-10-04T13:36:56.120 回答