gpt4 book ai didi

performance - 编程语言的速度是否取决于编译器?

转载 作者:行者123 更新时间:2023-12-02 21:49:55 27 4
gpt4 key购买 nike

我正在尝试学习计算机程序的工作原理并有这个问题。我经常阅读诸如“C/C++ 比 java 快”或“Java 和 C#:速度比较”之类的文章。在所有情况下,用任何语言编写的程序都会被翻译成汇编语言。那么,这些语言速度差异的原因是什么。这是否意味着一种语言的编译器生成更好更快的汇编代码?

最佳答案

有点。

编译器/解释器/编程语言之间的速度差异有多种原因,其中一些与编译器有关,一些与语言本身有关。

一些编程语言需要更多的开销。

如果你的语言是非常高级的,那么与非常低级的 C 相比,它会有更多的开销。 (垃圾收集就是一个很好的例子)。这成为一种权衡。我想要超快的二进制文件,还是想要能够轻松编写程序?

语言旨在完成不同的事情。

例如,PHP 设计用于网络服务器,没有人会尝试使用它来创建顶级 fps 游戏。不同的语言更适合不同的任务,并且在某些领域会比其他领域更快。

并非所有语言都能编译成汇编语言。

虽然 C/C++ 可以编译成汇编,但出于互操作性的原因,像 Java 这样的语言会编译成字节码并针对 Java 虚拟机运行。再次强调,这是一种权衡——您以开销为代价获得了可移植性。

此外,C/C++ 甚至 都不需要编译成汇编。例如,enscriptem 最终会将 C/C++ 编译为 Javascript,以便它可以在网络浏览器上运行。

编译器不是魔法。

它们是程序,和所有程序一样,有错误并且会随着时间的推移而改进(或降级)。我可以在周末尝试编写一个 C 编译器,我敢打赌一百万美元,它的性能比你能想到的最慢语言的编译器/解释器差几个数量级。

编译器/解释器优化是一个持续的研究领域。

每年,研究人员都在撰写和发表有关编译和提高程序运行速度的新方法的论文。如果一种语言较新,它可能还没有时间完全应用所有可用的优化。 (往上看)。一些优化可能只适用于一种编译器/解释器。


因此,总而言之,语言的速度是语言本身的内在特征以及所用编译器/解释器/平台的成熟度的混合体。

编译器和解释器并不是所有编程语言之间都不变的整体魔法过程——它们各不相同,有不同的优点和缺点,并且一直处于不断变化的状态。

关于performance - 编程语言的速度是否取决于编译器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18855603/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com