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

标签 c programming-languages performance

<分区>

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

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

最佳答案

I know assembly is efficient because it has a close relation to machine language.

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

But c and c++ or ruby,let say,they are all gonna be 'translated' into machine language,right?

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

By more efficient,does it mean the machine code is better,or it takes less time to be 'translated' into machine code?

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

What if there is some compiler or interpreter that can produce faster,with better machine code?

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

关于c - 为什么人们说 C 更有效率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9375678/

相关文章:

c - FDTI libMPSSE I2C-使用单独的读取器和写入器线程进行读取和写入时出现 FT_IO_ERROR

c - 对多个信号使用单个信号处理函数的正确方法是什么?

performance - 隐式值类中的继承是否会带来开销?

c - 如何知道客户端是否已在套接字中终止

objective-c - 如何在 Objective-C 中创建一个空数组,并为它一个一个赋值?

gcc - 编译器是否真的产生机器码?

asp.net - 为工作找出正确的语言 : branching out from C#

actionscript-3 - AS3 try catch 重吗?

C++ 访问远离当前类层次结构的对象

c - 将我的 float 限制为只有 3 位数字