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

时间:2012-02-21 10:13:27

标签: c programming-languages performance

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

但是,C和C ++或者ruby,比方说,它们都将被翻译成#&进入机器语言吧?通过提高效率,是指机器代码更好,还是花费更少的时间进行翻译'进入机器码?如果有一些编译器或解释器可以产生更快的速度,也会产生更好的机器代码呢?

2 个答案:

答案 0 :(得分:3)

这里有很多不同的问题,所以完整的答案会很长。

某些高级语言比其他语言更高级。 C不是很高级。

不同的语言会做出不同的权衡。有些语言侧重于易于开发,程序员工作效率,防止常见错误,自动化等。

其他人关注速度/效率。 C是后者之一,部分原因在于它的年龄和历史。

考虑到相同的努力程度,C程序不一定比其他语言的同等程序更快,特别是在现代多核系统上。但是,如果您有时间编写,C会为低级别优化提供更多可能性。缺点是这些优化很容易出错,并且错误通常会使程序完全崩溃。

答案 1 :(得分:3)

  

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

不,它没有。它具有1.1关系 - 它是精确机器代码命令的书面表示。它是一种助记符语言 - 基本上用另一种表示法替换字节码。所有更高的语言都错过了。

  

但是c和c ++或ruby,比方说,它们都会被“翻译”成机器   语言,是吗?

是的,但问题是何时以及如何有效率。低级语言 - 和C是一个 - 允许不太高级的结构,因此更接近汇编程序,并且编译器更容易优化。

  

更高效,是指机器代码更好,还是花费更少的时间   “翻译”成机器代码?

除了及时编译语言或口译员之外,NOONE关心翻译需要多长时间。 C被静态翻译,一次,然后执行。

  

如果有一些编译器或解释器能够生成更快的机器,那么该怎么办?   码?

然后声明不对。有趣的是,实际情况并非如此 - 为高级语言制作超高效的编译器并不容易。基本上你一直在问为什么一辆超级跑车如此之快?当每辆菲亚特熊猫拥有更多的马力时,它就不会被认为是如此之快 - 但遗憾的是它们没有,也从未有过。