📜  为什么认为C比其他语言快?

📅  最后修改于: 2021-05-26 01:43:18             🧑  作者: Mango

您可能遇到过这些陈述,C的优化程度更高,或者C的性能优于高级语言,因此,我将讨论这种假设的原因。

首先,让我们列出Java之类的语言而不是C所提供的功能:

  1. 数组索引绑定检查
  2. 未初始化的变量值检查
  3. 检查内存泄漏
  4. 检查空指针取消引用
  5. 自动垃圾收集
  6. 运行时类型检查
  7. 异常处理

并且还有C中不存在的更多此类功能。

额外的功能需要付出一定的代价,而代价包括降低速度和增加尺寸

让我们以C和Java的动态分配为例
Java

MyClass obj = new MyClass();

您是否考虑过obj的大小,答案是否定的。原因是它是由语言本身在后台自动处理的,因此您不必为其编写特定的代码。

但是在C的情况下

struct MyStruct *obj = malloc(sizeof(struct MyStruct));

正如您在上面的代码中看到的那样,将引用分配给指针的任务,大小的分配是由程序员明确完成的,最后释放了分配的内存。

Thumb执行环境(ThumbEE)支持数组绑定检查,它的其他功能包括对每个加载和存储指令进行自动空指针检查,这是一个调用处理程序的特殊指令。

另一个原因是C与汇编语言的亲密性,在大多数情况下,其指令直接映射到汇编语言,C距离汇编语言只有一层或两层抽象,而Java距离汇编语言至少有三层抽象。

参考 :
1)为什么这么快又为什么要用其他语言更快或更快速
2)ARM_体系结构#Thumb_Execution_Environment_.28ThumbEE.29
3)Linus Torvalds视图

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。