你可能会遇到这些说法,C语言比高级语言更优化,或者C语言的性能更好,所以我将讨论这个假设的原因。
首先,让我们列出Java等语言提供的功能,而不是C:
- 数组索引界限检查
- 未初始化变量值检查
- 检查内存泄漏
- 检查空指针取消引用
- 自动垃圾收集
- 运行时类型检查
- 异常处理
还有更多这样的特性,这些特性在C中是不存在的。 额外的功能是有成本的,成本包括 速度 而且增加了 大小 . 让我们以C和Java中的动态分配为例 爪哇:
MyClass obj = new MyClass();
你有没有考虑过 obj 答案是 不 原因是它是由语言本身在后台自动处理的,你不必为它编写特定的代码。 但万一 C
struct MyStruct *obj = malloc(sizeof(struct MyStruct));
正如您在上面的代码中所看到的,为指针分配引用的任务,大小的分配是由程序员显式完成的,并最终释放分配的内存。 Thumb Execution Environment(ThumbEE)支持数组绑定检查,它的其他功能包括对每个加载和存储指令进行自动空指针检查,这是一条调用处理程序的特殊指令。 另一个原因是C语言与汇编语言的关系密切,在大多数情况下,C语言的指令直接映射到汇编语言,C语言与汇编语言之间只有一级或二级抽象,而Java与汇编语言之间至少有三级抽象。
参考资料: 1) why-is-c-so-fast-and-why-arent-other-languages-as-fast-or-faster 2) ARM#U架构#Thumb#U执行U环境u.28ThumbEE。29 3) 莱纳斯·托瓦尔兹视图
本文由 曼迪星 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。