首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么Python比C++慢很多?

话说为什么大家会集中讨论GIL?...在这里题主的标准线是一个按bit处理的单线程DFS啊……几乎没有GIL发挥的余地好么…… 这个八皇后的DFS,我的C++代码在不加某些评估性剪枝的情况下对15需要算18s左右(开O2大约8.6秒,与题主描述基本一致...接下来需要分析的无非是Python慢在哪个细节,以及能否改进的问题。 下面是两段用来测试的代码,首先是Python的: class="highlight"> #!...对于这个例子,最直接的影响其实在于:Python是逐句解释执行的,C++是先编译成本地代码,期间还有编译期的类型检查,不存在动态类型、动态检查,并且可以进行编译器优化。...实际上,单纯的只是替换一下解释器,换成PyPy来做的话,原本这个24s的Python源码就只需要1s左右了。

79750
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    为什么C代码比Python代码运行得更快?

    在本文中,我们将了解为什么 C 语言代码比 Python 运行得更快。 Guido Van Rossum开发了Python,这是最著名的编程语言之一。...Python比C慢,因为它是一种解释型语言。 Python比C慢,因为它是一种解释型语言。 因此,需要更多真实的 CPU 指令来执行给定的语句。...解释代码总是比实际的机器代码慢,因为它需要更多的指令来实现指令,而不是执行实际的机器指令。 例 考虑表达式 x += 1。...运行时可以提供运行时服务,例如动态对象加载,并构建代码将在其中执行的环境。在编译的 C 中,存在运行时。已编译C++具有运行时。 为什么 Python 比 C 慢?...结论 在本文中,我们了解了为什么 C 语言代码执行比 Python 更快的不同原因。

    1.4K30

    用数据告诉你 Python 代码比 Java 慢 100 倍!

    可以看到,在计算 Fibonacci 数值时,Java 比 Go 要慢一些,大概慢 24%,而 Python 几乎慢了 100 倍,也就是 9458%。...这个结果验证了对 Java 和 Go 的判断,但让我们感到吃惊的是 Python 的表现,它慢得不只是一个数量级,是两个! Python 为什么会花这么多时间。...很多人关注的是 Python 的易用性,并通过牺牲性能来快速获得处理结果。 相信数据科学家们都是这么想的,况且有这么多现成的库可以用,为什么要去找其他的?迟早会有人优化它们的。...PyPy 的平均响应速度比 Python 快 5 倍,但仍然比 Go 慢 20 倍。...通过执行这些简单的数学运算我们可以得出这样的结论: Go 的执行速度比 Java 快一些,比解释运行的 Python 快 2 个数量级。 所以在高负载的关键任务上使用Python不是一个好的选择。

    3.5K30

    【一起学python系列】--python发展史

    多线程支持不好 3.Python慢 Python相对C语言确实慢很多,但其实这里所指的速度慢在大多数时候我们是无法感知的,比如说,是用C语言程序开发了一个程序,执行需要花0.01秒,使用Python...他希望这个新的叫做Python的语言,能符合他的理想:创造一 种C和shell之间,功能全面,易学易用,可拓展的语言。 1991年,第一个Python编译器诞生。...- 2006/09/19 Python 2.6 - 2008/10/1 Python 2.7 - 2010/07/03 Python 3.0 - 2008/12/03 Python 3.1 - 2009...2010 年继续推出了兼容版本2.7,大量Python3的特性被反向迁移到了Python2.7,2.7比2.6进步非常多,同时拥有大量3中的特性和库,并且照顾了原有的Python开发人群。...py3比py2更规范统一、去掉了没必要的关键字Python3.x还在持续改进。 所以我们还是推荐大家使用Python3.x。

    1K80

    LINUX最大线程数及最大进程数

    -ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch Distributor ID: CentOS Description:...stack 所占用的内存,用 ulimit -s 可以查看默认的线程栈大小,一般情况下,这个值是 8M 可以写一段简单的代码验证最多可以创建多少个线程 int main() { int i = 0;...,因为 32 位 linux 下的进程用户空间是 3G 的大小,也就是 3072M,用 3072M 除以 8M 得 384,但是实际上代码段和数据段等还要占用一些空间,这个值应该向下取整到 383,再减去主线程...那为什么 linuxthreads 上还要少一个线程呢?...内核环境,线程创建速度飞快,一不小心立刻内存被 吃光,这一点反倒是2.4内核环境好,因为2.4内核创建的是进程,而且线程创建速度比2.6内核慢几个数量级。

    4.3K10

    由 Python2 和 Python3 中 socket.inet_aton() 实现不同引发的血案

    这几天在做一个功能实现的时候,需要把别人用 Python2.6 写好的脚步转成 Python3.4 实现,大部分地方转化都没啥问题,但是在 socket.inet_aton() 转化的过程中出了点问题...下面是 Python2.6 的实现代码: #!...也就是说 Python2.6 和 python3.4 中对于 socket.inet_aton(ip) 的实现是有差异的,查官方文档吧。...decode 把 bytes 使用 gbk 的方式解码成 str,至于为什么用 gbk,是因为我对比了下,只有 gbk 编码方式解码后的输出才和 python2.6 中的 str 返回值结果一致。...依然是编码格式的问题,Python2.6 中参数传入的是 str,但是 Python3.4 中参数需要传入 bytes,那就继续转码吧。 再次转码后的代码如下: #!

    1.1K31

    Python科学计算学习之高级数组(二)

    代码性能和向量化 背景:Python是一种解释型的编程语言,基本的python代码不需要任何中间编译过程来得到机器代码,而是直接执行。...而对于C、C++等编译性语言就需要在执行代码前将其编译为机器指令。 但是,解释型代码的速度比编译型代码要慢,为了使得python代码更快,最好尽可能的使用Numpy和Scipy包中的函数编写部分代码。...(注意:numpy和scipy是诸如C、C++等编译型语言编写实现的) 例如:Python语言的numpy向量化语句为什么比for快?...总计66条指令,比编译型语言慢至少17倍(假设每条指令执行时间相同。但事实上,访存/跳转类指令消耗的时间常常是加法指令的十倍甚至百倍)。...这还只是读入源码的消耗,尚未计入“语法分析”这个大头;加上后,起码指令数多数百倍(消耗时间嘛……我猜起码得多数千倍吧)。 向量化:      为提升代码的性能(运行时间),通常需要将代码向量化。

    1.1K20

    Python 基础一

    框架Django 诞生 Python 2.5 - September 19, 2006 Python 2.6 - October 1, 2008 Python 2.7 - July 3, 2010...3.0 - December 3, 2008 Python 3.1 - June 27, 2009 Python 3.2 - February 20, 2011 Python 3.3 - September...再看缺点: 速度慢,Python 的运行速度相比C语言确实慢很多,跟JAVA相比也要慢一些,因此这也是很多所谓的大牛不屑于使用Python的主要原因,但其实这里所指的运行速度慢在大多数情况下用户是无法直接感知到的...,必须借助测试工具才能体现出来,比如你用C运一个程序花了0.01s,用Python是0.1s,这样C语言直接比Python快了10倍,算是非常夸张了,但是你是无法直接通过肉眼感知的,因为一个正常人所能感知的时间最小单位是...关于这个问题的折衷解决方法,我们在以后线程和进程章节里再进行详细探讨。 当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件。

    23050

    python3--python的出生与应用

    框架Django 诞生 Python 2.5 - September 19, 2006 Python 2.6 - October 1, 2008 Python 2.7 - July 3, 2010 In...- December 3, 2008 Python 3.1 - June 27, 2009 Python 3.2 - February 20, 2011 Python 3.3 - September...再看缺点: 速度慢,Python 的运行速度相比C语言确实慢很多,跟JAVA相比也要慢一些,因此这也是很多所谓的大牛不屑于使用Python的主要原因,但其实这里所指的运行速度慢在大多数情况下用户是无法直接感知到的...关于这个问题的折衷解决方法,我们在以后线程和进程章节里再进行详细探讨。 当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件。...这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。 CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。

    62620

    这2种Python字符串格式化的写法已经被淘汰了,你是不是还在用?

    一、3种方式%格式化已淘汰format格式化(python2.6新增)不好用,处于淘汰的边缘。f-string格式化(python3.6新增)目前最常用举个例子,现在需要打印:你好,我是”晚枫“。...以上3种用法的代码如下:# 1、%格式化name = '晚枫'sentence = '你好,我是%s' % (name)# sentence = 你好,我是晚枫# 2、format格式化(python2.6...二、为什么第3种最流行?按照时间顺序,每一种新方式的推出,都是对上一种的改进。这3种表达方式,分别改进了上一种的什么不足呢?原理层面的我们只说一种:每一种的代码运行速度,都比上一种的快。...虽然比原来的%要清爽一些,但format后面还是要把一大串变量名称重复写一遍,是不是依然很麻烦?f-string格式化于是,python3.6新增了目前最常用的这种格式化方法,直接上代码。...3、写在最后每次新的python版本开始研发之时,程序员都会高度关注新版本有哪些新特点。为什么?原因无它,python一直在进步,看着自己工作的工具变得越来越高级,生产效率越来越高,也是一种乐趣吧。

    40230

    为什么Python这么慢?

    用.NET实现的叫IronPython,Java的叫Jython,用Python实现的叫PyPy 我想回答这个问题:当Python比另一种语言慢2 - 10倍完成一个可比较的应用程序时,为什么它慢,我们不能使它更快...那么其他Python runtimes呢? PyPy有一个GIL,它通常比CPython快3倍。...如果您在终端上编写了python myscript.py,那么CPython将开始一长串的读取、词法分析、解析、编译、解释和执行这些代码 在这个过程中很重要的一点是创建一个.pyc文件,在编译器阶段,字节码序列被写到...net CIL是一样的,. net公共语言运行时(CLR)对机器代码使用即时编译。 那么,如果Python都使用虚拟机和某种字节码,那么为什么在基准测试中它比Java和c#慢那么多呢?...CPython的启动时间已经比较慢了,PyPy比CPython慢2 - 3倍。众所周知,Java虚拟机的启动速度很慢。

    1.5K20
    领券