为什么人们说 C 更有效率?

Gni*_*ohz 5 c performance programming-languages

人们总是说 C 比任何其他高级语言都更高效。我不明白为什么。我知道汇编是高效的,因为它与机器语言有密切的关系。

但是 C 和 C++ 或 ruby​​,可以说,它们都会被“翻译”成机器语言,对吗?更高效,是否意味着机器代码更好,或者“翻译”成机器代码所需的时间更少?如果有一些编译器或解释器可以产生更快的速度,并且产生更好的机器代码怎么办?

小智 5

我知道汇编是高效的,因为它与机器语言有密切的关系。

不,不是的。它具有 1.1 关系 - 它是精确机器代码命令的书面表示。它是一种助记语言——基本上用另一种表示形式替换字节码。所有高级语言都忽略了这一点。

但是 C 和 C++ 或者 ruby​​,比如说,它们都会被“翻译”成机器语言,对吧?

是的,但问题是何时以及如何有效。低级语言(C 就是其中之一)允许不太高级的构造,因此更接近汇编语言,并且更容易让编译器优化。

更高效,是否意味着机器代码更好,或者“翻译”成机器代码所需的时间更少?

除了及时编译的语言或解释器之外,没有人关心翻译需要多少时间。C 静态翻译一次,然后执行。

如果有一些编译器或解释器可以更快地生成更好的机器代码怎么办?

那么这个说法是不正确的。有趣的是,事实并非如此——为高级语言制作一个超级高效的编译器并不容易。基本上,你一直在问为什么超级跑车这么快,并表示当每辆菲亚特熊猫都拥有更多马力时,它就不会再被认为这么快了——但遗憾的是他们没有,也永远不会有。

  • 小点重新。翻译时间:编译器性能*确实*重要 - 没有人愿意等待一个小时来进行调试构建。例如,几乎没有编译器在分配寄存器时尝试找到最佳解决方案(通过图形着色),它们都使用启发式和更快的算法,有时会导致更糟糕的代码,但可能更有效(图形着色是 NP 完全的)。除了优化之外,一半的解析算法都是由性能驱动的。 (2认同)