c与Python哪个效率高

介绍

今天就跟大家聊聊有关c与Python哪个效率高,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

当我们提到一门编程语言的效率时:通常有两层意思,第一是开发效率,这是对程序员而言,完成编码所需要的时间,另一个是运行效率,这是对计算机而言,完成计算任务所需要的时间。编码效率和运行效率往往是鱼与熊掌的关系,是很难同时兼顾的。不同的语言会有不同的侧重,Python语言毫无疑问更在乎编码效率,人生短暂,我们使用Python。

虽然使用Python的编程人员都应该接受其运行效率低的事实,但Python在越多越来的领域都有广泛应用,比如科学计算,web服务器等。程序员当然也希望Python能够运算得更快,希望Python可以更强大。相比之下,c语言的效率是高于Python的。

首先,Python相比其他语言具体有多慢,这个不同场景和测试用例,结果肯定是不一样的。这个网址给出了不同语言在各种情况下的性能对比,这一页是python3和c++的对比,下面是两个例子:

 c与Python哪个效率高”> </p> <p>从上图可以看的出,不同的情况下,Python比c++慢了几倍到几十倍。</p> <p> Python运算效率低,具体是什么原因呢,下列罗列一些:</p> <p>第一:Python是动态语言</p> <p>一个变量所指向对象的类型在运行时才确定,编译器做不了任何预测,也就无从优化。举一个简单的例子:r=a + b, a和b相加,但a和b的类型在运行时才知道,对于加法操作,不同的类型有不同的处理,所以每次运行的时候都会去判断a和b的类型,然后执行对应的操作。而在静态语言如c++中,编译的时候就确定了运行时的代码。</p> <p>另外一个例子是属性查找,关于具体的查找顺序在《Python属性查找》中有详细介绍。简而言之,访问对象的某个属性是一个非常复杂的过程,而且通过同一个变量访问到Python的对象还都可能不一样(参见延迟属性的例子)。而在c语言中,访问属性用对象的地址加上属性的偏移就可以了。(更多学习内容,请点击Python学习网)</p> <p>第二:Python是解释执行,但是不支持JIT(及时编译器),虽然大名鼎鼎的谷歌曾经尝试Unladen Swallow这个项目,但最终也折了。</p> <p>第三:Python中一切都是对象,每个对象都需要维护引用计数,增加了额外的工作。</p> <p>第四:Python吉尔,吉尔是Python最为诟病的一点,因为吉尔,Python中的多线程并不能真正的并发。如果是在IO绑定的业务场景,这个问题并不大,但是在CPU绑定的场景,这就很致命了。所以笔者在工作中使用Python多线程的情况并不多,一般都是使用多进程(前叉),或者在加上协程。即使在单线程,吉尔也会带来很大的性能影响,因为Python每执行100个操作码(默认,可以通过sys.setcheckinterval()设置)就会尝试线程的切换,具体的源代码在ceval。c:: PyEval_EvalFrameEx。</p> <p>第五:垃圾回收,这个可能是所有具有垃圾回收的编程语言的通病.python采用标记和分代的垃圾回收策略,每次垃圾回收的时候都会中断正在执行的程序,造成所谓的顿卡。</p> <p class=看完上述内容,你们对c与Python哪个效率高有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

c与Python哪个效率高