知行编程网知行编程网  2022-11-03 21:00 知行编程网 隐藏边栏  5 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于Python和c哪个效率高一些的相关知识,包括工作效率高的意思,以及效率快还是效率高这些编程知识,希望对大家有参考作用。

哪个更高效,Python或c

当我们提到一种编程语言的效率时:通常有两个含义,一是开发效率,即程序员完成编码所花费的时间;另一个是运行效率,也就是完成一个计算任务所需的时间。编码效率和运行效率往往是鱼和熊掌的问题,很难同时兼顾。不同的语言有不同的侧重点。 python语言无疑更关心编码效率。人生苦短,我们用python。

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

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

哪个更高效,Python或c

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

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

第一:python是动态语言

变量指向的对象的类型是在运行时确定的,编译器无法做出任何预测,因此无法进行优化。举个简单的例子:r = a + b。 a 和 b 被添加,但 a 和 b 的类型仅在运行时才知道。对于加法运算,不同的类型有不同的处理,所以每次运算都会判断a和b的类型,然后进行相应的运算。 .在 C++ 等静态语言中,运行时代码是在编译时确定的。

第二:python被解释执行,但不支持JIT(即时编译器)。虽然著名的 google 曾经尝试过 Unladen Swallow 项目,但最终还是放弃了。

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

第四:python GIL,GIL是Python最被诟病的一点,因为GIL,python中的多线程不能真正并发。如果是IO绑定的业务场景,这个问题不是什么大问题,但是在CPU BOUND场景下,就是致命的了。因此,我在工作中使用 python 多线程的情况并不多。一般来说,我使用多处理(pre fork),或者添加协程。即使在单线程中,GIL 也会对性能产生很大影响,因为 python 会尝试每 100 个操作码切换线程(默认情况下,可以通过 sys.setcheckinterval() 设置),具体源码在 ceval.c 中: :PyEval_EvalFrameEx。

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

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享