我应该使用代码转换器(Python to C ++)吗?

时间:2012-09-10 01:31:26

标签: c++ python performance code-generation converter

让我直接说,我不是程序员。我只是一个有想法的人,迈出了实现这一目标的第一步。我对编程并不陌生,请注意,但这里的一些概念和术语已经超出我的想象;所以如果之前已经回答过这个问题,我会事先道歉(即Convert Python program to C/C++ code?)。

我有个想法创建一个简单的A.I.网络分析从手机通过云计算发送的音乐数据(我有一个人为云的东西)。这将需要大量的内存,并且需要快速进行硬数字运算。我曾计划在python中做这件事,但后来才知道这可能不是一个好主意(Is Python faster and lighter than C++?)。

因为python真的是我皮套中唯一的枪,所以我想使用python-to-C ++转换器。但没有任何代价是没有价格的:

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

4 个答案:

答案 0 :(得分:13)

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

答案 1 :(得分:2)

如果您想要C ++,请使用C ++。请注意,PyPy有一堆基准测试表明它们可以比C快得多;使用编译扩展的NumPy,数值工作变得更快更容易。

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

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

答案 2 :(得分:1)

与已经陈述的类似,C ++在某些领域可能更快,而在其他领域则更慢。 Python完全一样。最后,任何语言都将转换为机器代码。最终编译器最终要使其高效,因为它知道如何操作。也就是说,最好选择一种语言并学习如何编写快速有效的代码来做你想做的事情。

答案 3 :(得分:0)

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

从Python到C ++的简单逐行转换不可能仅使用Cython之类的东西来提高性能,所以我认为使用Cython更合理。与优秀的开发人员从头开始使用C ++相比,它可能还差得多。 C ++简单地提供了对所有事物的更多控制,例如定义最小所需长度的数据类型,在堆栈上固定大小的数组,在生产中关闭数组边界检查等。