C的性能特点

C语言是一种命令式语言(又称强制式语言,通过指明一系列可执行的运算及运算的次序来描述计算过程的语言),生于1972年的贝尔实验室。平时我们用的大多数语言(比如,C,C++,Java,C#,Python等)都是命令式语言,与它相对的是函数式语言(functional language),如Haskell,Lisp。函数式语言更像数学,命令式语言更接近人的思维。

C语言的特性

C语言的典型特征是编译型语言(compiled language)(相对于解释型语言来说)、命令式的、人工管理内存 。对于编译型语言,程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件,运行时不需要重新翻译,直接运行编译的结果就行了,因此效率高。 以此相对,解释型语言程序不需要编译,程序在运行时才翻译成机器语言,每执行一次都要翻译一次,因此效率比较低。由此,当涉及到速度,内存,低层次特性(low-level features)如:移动stack pointer等常会使用C语言。

从内存的角度思考C语言,相对于其他语言,汇编语言直接操作内存;C、C++访问内存;Java,C#,Scheme/LISP,ML使用的是内存自动管理机制。 C语言通过堆(heap)和栈(stack)访问的内存,C函数将会分配到棧中,函数在被调用时进棧(pushed on to stack), 函数在返回时出棧(popefd off the stack),函数能访问当前棧顶部以下的所有内存;堆是一块儿用于动态内存分配的内存区域,可以把它想像称为一个巨大的数组 ,通过指针(pointer)来访问,如果操作系统允许,整个程序都能访问堆。C语言人工内存管理目的是允许程序能够分配内存用于当前的使用 ;当程序执行完后,能够释放内存,用于重新分配 ,C语言的标准类库中有malloc和free两个函数支持内存管理 。从内存的层面,C语言虽然使用起来更复杂些,但在可操作性上更好一些,毕竟自动内存管理,内存的释放不是立即的。

C语言比起其他的高级语言来说,更接近计算机,也就是说,它介于高级语言和汇编语言之间,通常来说比其他高级语言执行效率更高一点。当然,C语言的函数化特点(即所有C程序都是由函数构成)和灵活的语法也是吸引程序设计者的地方。

C语言的优势

C语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。把高级语言的基本结构和语句与低级语言的实用性结合起来。C语言允许直接访问物理地址,可以直接对硬件进行操作,因此它既具有高级语言的功能,又具有低级语言的许多功能,C语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可用来写系统软件,又可用来开发应用软件,已成为一种通用程序设计语言。另外C语言具有强大的图形功能,支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。

C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。 C语言的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构的运算。并引入了指针概念,使程序效率更高。

C语言生成目标代码质量高,程序执行效率高,C语言描述问题比汇编语言迅速,工作量小、可读性好,易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编程序生成的目标代码效率低10%~20%。可移植性好,C语言在不同机器上的C编译程序,86%的代码是公共的,所以C语言的编译程序便于移植。在一个环境上用C语言编写的程序,不改动或稍加改动,就可移植到另一个完全不同的环境中运行。

当前新发明的语言Swift的比较

Swift包含了很多现代语言特性尤其是从一些脚本语言如Javascript/Ruby中汲取了营养,此外苹果发布Swift时,使用特别选用的一些例子来宣称Swift性能对于Ojbective C的大幅提升(40~50%),如复杂对象排序等。但是开发者实际测试出来的情况却相反。实际数据显示,Swift在简单循环、递增、赋值、数组扩展、字符串拼接上性能远不如Objective C。可能的一个解释是Swift使用类classes,总在执行ARC(Auto Referrence Count),而Objective C则更多使用C风格的数据类型。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,711评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,079评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,194评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,089评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,197评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,306评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,338评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,119评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,541评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,846评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,014评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,694评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,322评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,026评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,257评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,863评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,895评论 2 351

推荐阅读更多精彩内容

  • TITLE: 编程语言乱炖 码农最大的烦恼——编程语言太多。不是我不学习,这世界变化快! 有时候还是蛮怀念十几、二...
    码园老农阅读 5,309评论 2 35
  • RecyclerView出现已经有一段时间了,在网上也有很多学习的教程,准备整理一下,总结一下RecyclerVi...
    滴滴滴9527阅读 2,040评论 0 9
  • 在这个世界打拼,谁都不容易, 我们确实到了想死都不敢死的年纪, 所以我们在拼命的同时, 尽量善待自己可以吗? 生命...
    静若繁花_5dfd阅读 304评论 0 2
  • 1. 3月中旬,去了一趟峨眉山,参加慈善行走。这次很特别,出发那天是农历二月十九日,观音菩萨的圣诞,到达万年寺那天...
    文晓玲阅读 396评论 8 6
  • 【PC版】昨日超多海外优质组件上线啦 不知道冒险家们是否都已经体验过了呢~ 这四款组件不仅解决了冒险家们在生存时的...
    Mine先生阅读 452评论 0 3