首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与汇编语言相比,C语言效率低吗?

与汇编语言相比,C语言效率低吗?
EN

Stack Overflow用户
提问于 2010-07-23 07:15:34
回答 11查看 5.8K关注 0票数 8

这纯粹是一个理论问题,所以,给出一个“无限”的时间来编写一个琐碎的程序,以及对C和汇编语言的高级知识,用汇编语言做一些事情真的更好吗?在将C编译成汇编语言(机器码)时,“性能”会丢失吗?

说到性能,我的意思是,现代的C编译器在某些直接用汇编语言编程的任务上做得不好吗?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2010-07-23 07:17:58

在许多情况下,现代C语言可以比汇编做得更好,因为跟踪哪些操作可以重叠,哪些操作会阻塞其他操作是如此复杂,以至于只能由计算机合理地跟踪。

票数 18
EN

Stack Overflow用户

发布于 2010-07-23 07:23:51

与任何东西相比,C并不是低效的。C是一种语言,我们并不从效率的角度来描述语言。我们在效率方面对程序进行比较。C不写程序,程序员写程序。

与C相比,汇编提供了极大的灵活性,这是以时间编程为代价的。如果你是一名guru C程序员和一名guru Assembly程序员,那么很有可能你可以用Assembly来编写任何给定的程序,但这样做的代价几乎肯定是令人望而却步的。

我们中的大多数人都不是这两种语言的大师。对于我们大多数人来说,将性能调优的责任交给C编译器是一件双赢的事情:你得到了许多汇编语言大师的智慧,也就是编写C编译器的人的智慧,以及你手中的大量时间来进一步纠正和增强你的C程序。您还可以获得可移植性作为奖励。

票数 15
EN

Stack Overflow用户

发布于 2010-07-23 07:23:16

这个问题似乎源于一种误解,即更高的性能自然会更好。从更高层次的角度来看,要使汇编在一般情况下变得更好,可以获得太多的东西。即使性能是您最关心的问题,编译器在创建高效汇编方面通常比您自己编写代码做得更好。他们对你所有的源代码有更广泛的“理解”,这是你无法想象的。许多优化都可以通过不使用结构良好的汇编来实现。

显然,也有例外。如果您需要直接访问硬件,包括CPU的特殊处理功能(例如SSE),那么组装是可行的。然而,在这种情况下,你最好使用一个更直接解决一般问题的库(例如数字包)。

但是,只有当您对提高性能有具体的、特定的需求,并且您可以证明您的程序集实际上更快时,才应该担心这样的事情。具体的具体需求包括:注意和测量性能问题,性能是基本设计关注点的嵌入式系统,等等。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3314270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档