主流编程语言的速度特点,主流编程语言各自特点
不同的编程语言都打包成exe执行,速度是不是都一样?为什么?
不一样。
简单的解释一下,计算机只认识0和1。而java,php,c,python等等各种语言,都需要各自的编译器来将程序代码“翻译”成0和1。
这个翻译的过程比较复杂,各自的能力水平侧重点都不一样,导致这个翻译的时间长短也不一样啦。
答案当然是不一样,具体原因涉及到编译原理,下面详细解释一下。
一种是编译型的语言,典型代表就是C/C++,编译型语言会将程序代码直接转换为可在特定机器上运行的二进制(机器语言)程序,它的特点是运行速度快,但是编译需要较长时间,编译后的程序无法跨平台运行。
还有一种是解释型语言(可以细分,比如基于本地的解释器,如Basic,Python等,还有基于虚拟机的解释器,如Java,C#等),这种语言不是把程序直接编译成机器代码,而是在运行时把代码逐条翻译成机器代码(基于虚拟机的语言会先将代码编译成中间语言代码,然后再在虚拟机上解释执行这些中间语言),解释器语言的特点是结果即时可见,可以跨平台运行,但是运行效率相比编译型语言要慢一些。
此外,即使对同一种语言编写的代码,不同的编译器编译后的程序,运行速度也会存在一定的差异,因为现代的编译器里面都加入了优化机制,然而优化策略、优化算法等实现细节却不尽相同,导致最终生成的exe也就有一些差异了。
不要说不同语言,同一种语言的不同版本的编译器效率都不同。比如icc编译优化过的程序跑在intel架构cpu上可能就比gcc编译的快一点。当然现在的主流是靠cpu性能硬上,编译上的优化差不多过得去就行。
为什么C语言编写的系统程序执行速度比用其他语言编写的快?
我是程序员,我从我理解的角度回答这个问题,抛砖引玉,引发讨论。
所有语言写的程序,最后都要编译或者解释成机器语言0101来执行。机器语言0101的基础单元就是指令,好比英文字母和单词。
最开始的编程就是写出一组组指令,好比写英语作文。这个过程就是最直接的最快的。
但是原始指令写程序对于人类来说太难理解了,于是就出现了高级语言和对应的编译器。
编译器就是把高级语言翻译成原始指令,也就是机器语言0101。
问题就是这个翻译的过程,除非编译器特别牛逼,每行代码翻译都是翻译成最直接高效的机器语言。显然这是不可能的,翻译的过程肯定有多余和啰嗦的部分。
比如英文翻译成中文,有的句子可以翻译成一句成语,也可以翻译成一段大白话。
一方面这考验语言编译器的水平,同样的源码,不同编译器编译后的执行效率不一样。另外一方面语言越复杂越难翻译,汇编机器语言,最好翻译,一行对应一个指令,高效。C需要面向过程的,增加了一些分支,循环等高级需要特性,也比较好翻译。
后来的更高级的语言加入了各种面向对象,接口,lamda表达式等高级特性,翻译后的指令执行效率就更低一些。
另外还有一些语言是要运行在解释器或者虚拟机上执行的,比如j***a shell perl等等,这就好比通过翻译软件聊天,边聊天边翻译,聊一句翻译一句,效率自然就更低了。
[免责声明]本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系邮箱:83115484@qq.com,我们会予以删除相关文章,保证您的权利。转载请注明出处:http://www.wnpsw.com/post/24507.html