加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

C语言程序为什么比其他语言程序都要快?它是牺牲了什么换来的?

发布时间:2019-09-09 13:04:25 所属栏目:移动互联 来源:嵌入式时代
导读:收集上好像一向有种说法:C说话措施运行时要比其他说话编写的措施快得多,由于它离底层呆板很近,这个说法正确吗?假如正确,那毕竟是什么阻止了其他说话编写的措施和C说话措施一样快呢? C说话措施快是由于它简朴 编程说话着实就是措施员与呆板雷同的一门外

收集上好像一向有种说法:C说话措施运行时要比其他说话编写的措施快得多,由于它“离底层呆板很近”,这个说法正确吗?假如正确,那毕竟是什么阻止了其他说话编写的措施和C说话措施一样快呢?

C说话措施为什么比其他说话措施都要快?它是捐躯了什么换来的?

C说话措施快是由于它简朴

编程说话着实就是措施员与呆板雷同的一门“外语”,可以以为编程说话是为措施员和呆板处事的。究竟上,在计划编程说话时,经常必要在一些题目上弃取以寻求均衡,天平的两头则别离是措施员和呆板。

人类和计较机的思索方法是有很大差此外,因此假如某种编程说话方向措施员,那么也许措施员写措施会很利便,可是最终获得的措施对呆板就不足友爱了,服从会有丧失。譬喻 Python,JavaScript 等剧本说话。

相反,假如某种编程说话方向呆板,那么最终获得的措施服从会获得很洪流平的晋升,可是这样的编程说话也许对付措施员就会不太友爱,开拓服从会有所低落。这类编程说话以C说话,以及汇编说话为代表。

C说话降生时,计较机技能还不是很发家,这也许是影响“天平”均衡的一个重要身分。现在,新呈现的一些编程说话凡是城市越发“照顾”措施员,“垃圾接纳”以及“动态范例”等机制险些已经成为标配了。

缘故起因也很简朴,由于在现在快节拍(快到“暴躁”)的社会,开拓服从低下的编程说话是无法获得普及成长的。

正如前文所说,当编程说话的“天平”向措施员倾斜时,最终获得的措施服从天然会有所低落。由于编程说话要“照顾”措施员是要支付价钱的——“垃圾接纳”等机制自己也会耗损相等一部门的计较机机能。固然本日的计较机技能已经大大成长,可是计较机的运算手段始终是有限的。

而C说话也没有这些特另外机制,天然最终C说话措施的运行速率也会比此外说话措施高。虽然,这也意味着C说话措施员必要本身打点分派的内存,本身停止内存溢出、走漏等题目,还要本身处理赏罚变量的范例。

再来谈谈C说话

计划职员在计划C说话时,更多思量的是最终C措施的运行服从,因此像下面这样的几种安详搜查,都要依靠措施员本身,C说话自己是不会搜查的:

  • 数组的索引界线
  • 未初始化的变量值
  • 内存是否走漏
  • 空指针的引用

以数组的应用为例,Java措施计划说话会在假造机中举办一些要领挪用、绑定搜查以及其他的一些安详搜查。这是说话自己提供的处事,这些搜查潜匿在底层,对开拓应用的措施员是不行见的。可是这样的安详搜查无疑对措施员是友爱的,由于它增进了应用的安详性。

而在C说话措施开拓中,纵然是一些很是噜苏的工作也要措施员本身处理赏罚。譬喻在执行 memcpy() 等内存操纵时,是不会搜查要复制的内存地区是否有重叠的。

C说话的这些特征在有些措施员看来是缺陷,但其他一些措施员却以为这是一种机动,可以或许让措施员具有更大的权限的打点呆板,以及得到计较机的每一点机能。

固然C说话号称是一种支持可移植措施开拓的编程说话,它的一些语法也极力实现这一方针,可是C说话并不想强制措施员以可移植的方法编写代码,以防备C说话成为“高级汇编说话”,事实编写特定于呆板的代码是C说话的上风之一。

C说话作为一门迂腐的编程说话,其热度却始终没有镌汰,天然的,C说话近些年也是获得许多成长和拓展的,从C89到C90,再到C99,C11尺度。可是C说话始终没有偏离它的根基精力:

  • 信托措施员,只管把节制权交给措施员。
  • 不阻止措施员做他想做的事,譬喻偶然数组下标为负也应承 arr[-1]。
  • 保持说话简捷。
  • 只提供一种操纵要领。
  • 保持C说话措施的高服从,纵然也许会与可移植性相悖。

最后一句必要稍加表明:天生高效的措施是C说话的最重要的利益之一。为了确保看似很是简朴的操纵不会导致瓦解,C说话偶然甘愿在通用抽象法则上做出让步,这也是C说话尺度中有很多“未界说”的法则。

譬喻,short int,int, long int 整数范例毕竟占用几多内存空间,C说话尺度并没有给出确定的界说,这就意味着这几种整数范例在差异的呆板上占用内存空间巨细也许是差异的。再好比,固然C说话尺度划定了 char 范例占用一字节内存空间,可是却没有界说其标记,也就是说 char 范例在有的呆板上是有标记的,而在其他呆板上也许是无标记的。

C说话的弱点

正如前文接头的,C说话的“天平”越发方向呆板,这使得C说话措施员的事变量增进不少。有一些 Java 措施员乃至说:“C说话措施员耗费一个月开拓的措施运行必要 0.05 秒,而我只必要一天就能开拓出这样的措施,它运行只必要 0.1 秒,以是,C说话快吗?”

固然略微浮夸了一些,可是简直应该思量这样的题目。一样平常来说,C说话措施自己简直会比其他编程说话措施快一些,可是有些项目简直不必要那么快,它们对 deadline 的要求越发苛刻,这时也许C说话就不再那么吻合了。

因此,C说话措施的服从简直高,但它是以捐躯措施员开拓服从换来的。这着实抉择了它与其他编程说话的应用规模,假如追求资源耗损以及服从的极致,那么C说话无疑是不错的选择。这个规模以嵌入式规模为代表。假如项目更多追求的是开拓服从,那么C说话显然就不是吻合的人选了。

【编辑保举】

  1. 2019年度措施员吸金榜发表:学哪种说话最赚钱?
  2. PYPL 9 月编程说话排行榜宣布,Python 一枝独秀
  3. 13 岁前写下第一行代码,这批小小措施员日前正式 C 位「出道」!
  4. 措施员选 Offer?这几个原则思量一下
  5. 编程说话Nim 中文官网现已上线
【责任编辑:华轩 TEL:(010)68476606】
点赞 0

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读