Answers:
我认为您错误地读取了这些统计信息。他们表明,Python 比C ++ 慢大约400倍,除了一个案例,Python更像是一种内存消耗。不过,就源代码大小而言,Python胜出。
我的Python经验显示出相同的趋势,即在进行任何严重的数字运算时,Python比C ++慢10到100倍。造成这种情况的原因很多,主要的原因是:a)Python被解释,而C ++被编译;b)Python没有原语,包括内建类型(int,float等)的所有对象都是对象;c)Python列表可以容纳不同类型的对象,因此每个条目都必须存储有关其类型的其他数据。这些都严重阻碍了运行时和内存消耗。
但是,这没有理由不理会Python。即使使用100慢速因子,许多软件也不需要大量时间或内存。开发成本是Python以简洁明了的风格取胜的地方。开发成本的这种提高通常超过了额外的CPU和内存资源的成本。但是,如果没有,则C ++胜出。
numpy
and scipy
,庞大的python
代码库也可能在纯python中包含大量代码,从而使事情慢于C++
。当python脚本的代码C++
所占的百分比达到时,它C
会接近脚本的速度100
,这时它不再是python脚本。当然,python正在起飞,但这并不是因为它像C++
- 一样快,因为它更易于使用。
枪战中所有最慢的Python使用(> 100x)都是需要高GFlop / s计数的科学操作。无论如何,您都不应该使用python。使用python的正确方法是导入一个执行这些计算的模块,然后与家人度过一个轻松的下午。那是pythonic的方式:)
源大小实际上并不是衡量的明智之举。例如,以下shell脚本:
cat foobar
比其Python或C ++等效项短得多。
cat footer
。
另外:Psyco与C ++的比较。
这仍然是一个糟糕的比较,因为没有人会去做那些数字繁琐的东西基准测试,无论如何它们总是专注于纯Python。更好的方法是比较实际应用程序或C ++与NumPy的性能,以了解您的程序是否会明显变慢。
与以往一样,托管语言和易于使用的编程语言也存在相同的问题-它们速度慢(有时会占用内存)。
这些是控制而不是处理的语言。如果我必须编写应用程序来转换图像并必须使用Python,那么所有处理都可以用C ++编写并通过绑定连接到Python,而接口和过程控制则完全是Python。