编程语言之间的速度是否存在差异?

时间:2011-06-06 16:37:22

标签: performance programming-languages

我的意思是存在如此巨大的差异,如果是这样,它的原因是什么,哪种语言最快?

3 个答案:

答案 0 :(得分:3)

是的,有速度差异。编程langauges就像汽车。有法拉利,野马,然后有迷你。每个都有不同的用途,使用方式不同。不同之处在于它们的设计和制造方式。是的,你可以替换另一个,但使用法拉利跑车进行日常活动几乎没有任何意义。根据你想要的,你有多少以及你想如何使用它,你是最好的判断。

对不起,我忍不住张贴这个。还有其他答案谈论编译与解释;执行与构建时间;微小程序与极其复杂的程序;域等可能对你更有意义......

答案 1 :(得分:2)

这取决于你的速度是什么意思。我将把你的陈述称为执行速度,代码在完成后运行的速度。实际上,问题不在于哪种编程语言执行得更快,而是编程语言的执行速度最快。然而,这种区别可能会分裂。

从历史上看,编译语言比解释语言运行得更快。也就是说,源代码直接转换为机器可以运行(编译)的东西的语言比源代码通过另一个程序或虚拟机运行的语言更快。我已经看过任何关于此的数据,但我知道我们在大学2008年观察到一些解释性语言 - 例如Java - 通过持续优化其虚拟机来缩小这一差距。

答案 2 :(得分:2)

编程语言没有速度(问“这把椅子的速度有多快”就像问“打破这个板需要多少次点击” - 太多的变量缺失了)。编程语言实现具有给定代码段的速度。这个速度也可以根据代码变化很大(当动态链接发挥作用时,PyPy可以在算术循环上击败GCC并进行多次迭代,但如果for (int i = 0; i < 10; i++) printf("%d", i);运行一次,它将不会有机会。)

  

我的意思是存在如此巨大的差异

定义“巨大”。但是,可能会有极端的差异。使用正确的语言实现和正确的基准测试,完全可以慢一百倍。对于大多数实际应用程序而言,差异要慢得多,部分原因是语言实现(大多数)不会影响I / O,网络通信和外部程序等性能。您仍然希望在Fortran或C中编写科学计算(或者使用其他语言的C库,例如使用Python的NumPy)。

  

它的原因是什么

甚至可以列举最重要的可能性。静态类型使本机编译(无论是提前还是即时)更容易,因此这些语言通常具有本机编译的速度提升。动态语言的JIT编译器存在并且变得越来越普遍和好 - 但差距在缩小,尽管总会有一些开销(毕竟有人必须管理动态性)。但这些编译器的质量也很重要。直接输出汇编代码的学校项目将无法与GCC的数千个优化相媲美。有些语言在运行时几乎不需要额外的工作(检查,抽象等),而其他语言则依赖于整个虚拟机等。

当然,运行时执行速度并非如此。如果我用C语言编写我用Python编写的东西,那么在我完成之前我会老去。或者我放弃了编程。