栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么python中的琐碎循环比C ++中的慢得多?以及如何优化呢?[重复]

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么python中的琐碎循环比C ++中的慢得多?以及如何优化呢?[重复]

一个聪明的C编译器能够通过识别,在年底,可能优化循环客场

a
始终为1
Python不能这样做,因为当循环访问
xrange
,需要调用
__next__
上的
xrange
对象,直到它引发
StopIteration
。python
__next__
在调用它之前不知道是否会有副作用,因此无法优化循环。本段的要点是,与C编译器相比,优化Python“编译器”是非常困难的,因为python是一种动态语言,需要编译器知道对象在某些情况下的行为。在C中,这要容易得多,因为C提前知道每个对象的类型。

当然,除了编译器,python还需要做更多的工作。在中

C
,您正在使用 硬件说明中 支持的操作来处理基本类型。在python中,解释器在
软件中
一次解释一行字节码。显然,这将花费比机器级指令更长的时间。数据模型(例如
__next__
,一遍又一遍地调用)也可以导致很多C不需要做的函数调用。当然,python做了这些工作,使其比您在编译语言中拥有的灵活性更高。

加快python代码速度的典型方法是使用库或内在函数,这些库或内在函数为低级编译代码提供高级接口。

scipy
并且
numpy
是此类库的出色示例。您可以查看使用的其他内容,
pypy
其中包括JIT编译器-
您可能无法达到本机速度,但是它可能会击败Cpython(最常见的实现),或者使用Cpython-API在C /
fortran中编写扩展,cython或f2py用于代码的性能关键部分。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/661650.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号