Performance 编程语言之间的速度有差异吗?

Performance 编程语言之间的速度有差异吗?,performance,programming-languages,Performance,Programming Languages,我的意思是有这么大的差异吗?如果有,原因是什么?哪种语言最快?这取决于你所说的速度。我将您的语句理解为执行速度,即完成后代码的运行速度。实际上,问题不在于哪种编程语言执行得更快,而在于哪种编程语言的实现执行得最快。然而,这一区别可能令人毛骨悚然 从历史上看,编译语言比解释语言运行得更快。也就是说,其源代码被直接翻译成机器可以运行(编译)的语言比其源代码通过另一个程序或虚拟机运行的语言要快。我已经有一段时间没有看到这方面的数据了,但我知道我们在大约2008年的大学里观察到,一些解释语言(例如Jav

我的意思是有这么大的差异吗?如果有,原因是什么?哪种语言最快?

这取决于你所说的速度。我将您的语句理解为执行速度,即完成后代码的运行速度。实际上,问题不在于哪种编程语言执行得更快,而在于哪种编程语言的实现执行得最快。然而,这一区别可能令人毛骨悚然


从历史上看,编译语言比解释语言运行得更快。也就是说,其源代码被直接翻译成机器可以运行(编译)的语言比其源代码通过另一个程序或虚拟机运行的语言要快。我已经有一段时间没有看到这方面的数据了,但我知道我们在大约2008年的大学里观察到,一些解释语言(例如Java)正在通过持续优化虚拟机来缩小这一差距。

这取决于你所说的速度。我将您的语句理解为执行速度,即完成后代码的运行速度。实际上,问题不在于哪种编程语言执行得更快,而在于哪种编程语言的实现执行得最快。然而,这一区别可能令人毛骨悚然


从历史上看,编译语言比解释语言运行得更快。也就是说,其源代码被直接翻译成机器可以运行(编译)的语言比其源代码通过另一个程序或虚拟机运行的语言要快。我已经有一段时间没有看到这方面的任何数据了,但我知道,大约在2008年的大学里,我们观察到一些解释语言(例如Java)正在通过持续优化虚拟机来缩小这一差距。

编程语言没有速度(问“这把椅子有多快”感觉像是在问“我需要多少点击才能打破这个板”-缺少太多的变量)。编程语言实现对于给定的代码段具有速度。这种速度也可能因代码而异(当动态链接开始发挥作用时,PyPy可以通过多次迭代在算术循环中击败GCC,但如果
for(int i=0;i<10;i++)printf(“%d”,i);
只运行一次,它就没有机会了)

我是说有这么大的区别吗

定义“巨大”。但是,是的,可能存在极端的差异。使用正确的语言实现和正确的基准测试,速度可能慢上百倍。对于大多数现实世界的应用程序来说,这种差异要慢得多,部分原因是语言实现(大多数情况下)不能影响I/O、网络通信和外部程序的性能。您仍然希望使用Fortran或C编写科学计算(或者使用其他语言的C库,例如,NumPy with Python)

原因是什么

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


当然,运行时的执行速度并不是万能的。如果我用C语言编写我用Python编写的东西,那么我在完成之前就已经老了。或者我已经放弃了编程。

编程语言没有速度(问“这把椅子有多快”就像问“我需要多少点击才能打破这块板?”“-缺少太多变量)。编程语言实现对于给定的代码段具有速度。这种速度也可能因代码的不同而有很大差异(当动态链接发挥作用时,PyPy可以在多次迭代的算术循环中击败GCC,但如果
for(int i=0;i<10;i++)printf(“%d”,i),它就没有机会了);
只运行一次)

我是说有这么大的区别吗

定义“巨大”。但是,是的,可能存在极端的差异。使用正确的语言实现和正确的基准测试,速度可能慢上百倍。对于大多数现实世界的应用程序来说,这种差异要慢得多,部分原因是语言实现(大多数情况下)不能影响I/O、网络通信和外部程序的性能。您仍然希望使用Fortran或C编写科学计算(或者使用其他语言的C库,例如,NumPy with Python)

原因是什么

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

当然,运行时的执行速度并不是万能的。如果我用C语言编写我用Python编写的东西,我会在完成之前就老了。或者我已经放弃了编程