热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

为什么Python代码在函数中运行得更快?

为什么Python代码

您可能会问 为什么 存储局部变量比存储全局变量更快。这是一个 CPython 实现细节。

请记住,CPython 被编译为解释器运行的字节码。编译函数时,局部变量存储在固定大小的数组( 不是 adict)中,变量名称分配给索引。这是可能的,因为您不能动态地将局部变量添加到函数中。然后检索局部变量实际上是对列表的指针查找和引用计数的增加,PyObject这是微不足道的。

将此与全局查找 ( ) 进行对比,后者是涉及哈希等LOAD_GLOBAL的真正搜索。dict顺便说一句,这就是为什么您需要指定global
i
是否希望它是全局的:如果您曾经分配给范围内的变量,编译器将发出STORE_FASTs 访问它,除非您告诉它不要这样做。

顺便说一句,全局查找仍然非常优化。属性查找foo.bar真的 慢!

这是关于局部变量效率的小插图。





推荐阅读
author-avatar
别禳莴觞芯_737
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有