-14

让我直接说我不是程序员。我只是一个有想法的人,他迈出了第一步,将其变为现实。请注意,我对编程并不陌生,但是这里的一些概念和术语超出了我的想象。因此,如果之前回答了这个问题,我提前道歉(即将Python 程序转换为 C/C++ 代码?)。

我有一个想法来创建一个简单的 AI 网络来分析通过云计算从手机发送的音乐数据(我找了一个负责云计算的人)。这将需要大量内存,并且需要快速进行硬数字运算。我曾计划在 python 中做这件事,但后来了解到这可能不是一个好主意(Python 比 C++ 更快更轻吗?)。

因为 python 真的是我皮套里唯一的枪,所以我正在考虑使用 python-to-C++ 转换器。但没有什么是没有代价的:

  1. 这是保持我的代码快速的一种有利方式吗?
  2. 使用转换器有什么好处?
  3. 我错过了什么吗?我还是新手,所以我什至不确定要问什么问题。

提前致谢。

4

4 回答 4

14

一般来说,这是一种糟糕的代码编写方式,并且不能保证它会更快。在一种语言中简单而快速的事情在另一种语言中可能是复杂而缓慢的。你最好学习如何编写快速的 Python 代码或直接学习 C++,而不是与翻译器争吵并弄清楚如何使生成的代码以可接受的方式运行。

于 2012-09-10T01:36:35.157 回答
2

如果你想要 C++,请使用 C++。但是请注意,PyPy 有很多基准测试表明它们可以比 C 快得多;并且使用使用编译扩展的 NumPy,数字工作变得更快、更容易。

如果你想用静态编译的东西编程,有点像 Python,那就是 RPython。

最后,您可以做 NumPy 所做的事情:使用用 C 或 C++ 编写的扩展来完成大部分繁重的计算工作,这似乎是合适的,因为分析显示了一个热点,或者因为您需要一个扩展来更轻松地做一些涉及python的内部结构。请注意,这会将您的代码绑定到特定的实现。

于 2012-09-10T01:41:47.617 回答
1

与已经说过的类似,C++ 在某些领域可能更快,而在其他领域则更慢。Python 完全一样。最终,任何语言都会被转换成机器码。最终取决于编译器是否使它尽可能高效,因为它知道如何做。也就是说,最好选择一种语言并学习如何编写快速高效的代码来做你想做的事。

于 2012-09-10T01:41:34.127 回答
0

不,因为良好的 C++ 性能的很大一部分来自选择性能更好的架构的可能性。它并不是神奇地来自同一事实“因为它是 C”。

从 Python 到 C++ 的简单逐行翻译不太可能比仅使用Cython之类的东西更能提高性能,所以我认为使用 Cython 更合理。它仍然可能比一个优秀的开发人员从头开始使用 C++ 做的要糟糕得多。C++ 简单地提供了对所有内容的更多控制,例如定义所需最小长度的数据类型、堆栈上的固定大小数组、关闭生产中的数组边界检查等的可能性。

于 2020-08-23T11:10:26.250 回答