c++ - Cython VS C++ 性能比较?

标签 c++ python c dll cython

<分区>

我正在尝试使用 Cython 来编写我的项目。

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

随着我的深入,我有点困惑。据我了解,Cython将python代码包装到C中。由于C具有更好的计算性能,因此性能得到了提高。我对此是否正确?

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

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

最佳答案

首先,让我来破除你似乎有的几个误解。

  • 另一个程序调用一个库会加速你的库。

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

  • Cython 将 Python 代码“包装”成 C

事实并非如此。它将 python 代码编译成 C,然后编译成动态库供 Python 稍后加载。这可能会在某种程度上优化您的 Python 代码,并使您能够与原子 C 数据类型进行交互,并在上面加上 Python 的魔法酱汁。虽然这很酷,但它不会为您的代码提供任何“神奇”的能力。

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

关于c++ - Cython VS C++ 性能比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19181984/

相关文章:

c++ - 插入 map 时抛出异常

python - 当我安装了 2 个不同的 Python 版本时安装 Pygame

python - Django:为什么出现 KeyError: 'pk'

c# - 托管 C++ 或 C# .NET,从 RapidShare 下载?

c++ - 如何跟踪或检测 USB 设备的格式化以及如何使用 C++ 知道它已完成格式化?

python - Pyramid 路由中的可选 url 段模式

c - 如何使用整数的小数

c - 独立可移植的snprintf(),独立于标准库?

C中计算字符串中特定子字符串的数量

c++ - 使用 "new"的类作用域