国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > Python常见问题 > Python和c哪个效率高一些

Python和c哪个效率高一些

python效率

头像

silencement

2019-10-10 11:27:404315浏览 · 0收藏 · 0评论

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

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

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

从上图可以看出,不同的case,python比C++慢了几倍到几十倍。

python运算效率低,具体是什么原因呢,下列罗列一些:

第一:python是动态语言

一个变量所指向对象的类型在运行时才确定,编译器做不了任何预测,也就无从优化。举一个简单的例子: r = a + b。 a和b相加,但a和b的类型在运行时才知道,对于加法操作,不同的类型有不同的处理,所以每次运行的时候都会去判断a和b的类型,然后执行对应的操作。而在静态语言如C++中,编译的时候就确定了运行时的代码。

另外一个例子是属性查找,关于具体的查找顺序在《python属性查找》中有详细介绍。简而言之,访问对象的某个属性是一个非常复杂的过程,而且通过同一个变量访问到的python对象还都可能不一样(参见Lazy property的例子)。而在C语言中,访问属性用对象的地址加上属性的偏移就可以了。(更多学习内容,请点击python学习网

第二:python是解释执行,但是不支持JIT(just in time compiler)。虽然大名鼎鼎的google曾经尝试Unladen Swallow 这个项目,但最终也折了。

第三:python中一切都是对象,每个对象都需要维护引用计数,增加了额外的工作。

第四:python GIL,GIL是Python最为诟病的一点,因为GIL,python中的多线程并不能真正的并发。如果是在IO bound的业务场景,这个问题并不大,但是在CPU BOUND的场景,这就很致命了。所以笔者在工作中使用python多线程的情况并不多,一般都是使用多进程(pre fork),或者在加上协程。即使在单线程,GIL也会带来很大的性能影响,因为python每执行100个opcode(默认,可以通过sys.setcheckinterval()设置)就会尝试线程的切换,具体的源代码在ceval.c::PyEval_EvalFrameEx。

第五:垃圾回收,这个可能是所有具有垃圾回收的编程语言的通病。python采用标记和分代的垃圾回收策略,每次垃圾回收的时候都会中断正在执行的程序,造成所谓的顿卡。

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

老牛耕田陈雪全文免费阅读笔趣阁| 狗和人胶配方20分钟一| 欧美电影免费观看电视剧大全 | 老赵玩小静揉捏胸奶头视频播放| 避孕套怎么用| 恋爱之瘾完整版在线全集免费观看| 他解开内裤把舌头进去的视频| B站夫妻进入高峰期需要多久| 继子的母亲免费版电视剧| 强多干伦久久久久久久久| 快拨出天我是你母亲歌词监控 | 暴躁姐姐BGM国语版| .《李瓶儿之真爱无悔》| 美国A片巜豪妇荡乳》| 《饥饿妻子》完整版在线观看 | 在车里被撞了八次高C| 午马影视免费观看电视剧| 《大度》韩版免费| 暴躁少女CSGO免费观看| 儿媳妇长太漂亮免费观看电视剧| 潮湿的体温2| 公车上双乳被两男人夹击电影| 女人吃男人鸡要多久恢复| BOBO浏览器| 公之浮之中字5HD| 人与动物胶配方视频荷尔蒙| 一妻二夫| 暴躁老妈1-46集免费| 《军妓肉体》在线观看| 九九在线观看免费播放大全电视剧| 偷偷在线观看免费的电视剧最新| 舒淇| 主人~我错了请把它关掉歌词| 《交换做爰》在线观看| XL上司| 禁忌4大结局| 老公不在我和公发| 《医务室的小秘密》动漫第一季免..| 高压监狱4伦理HD| 400入成品短视频| 成都私人情侣免费看电视剧的软件