Python 字节码优化问题

问题背景:

Python在执行的时候会加载每一个模块的PyCodeObject,其中这个对象就包含有opcode,也就是这个模块所有的指令集合,具体定义在源码目录的 /include/opcode.h 中定义了所有的指令集合,在执行的时候通过加载opcode完成指令的流水线执行过程,opcode也就是所有指令集合生成的字符串。执行体位于源码目录的 /Python/ceavl.c 中PyEval_EvalFrameEx()函数就是虚拟机的执行体函数,它会加载指令集合并完成运算。

问题描述:

在PyEval_EvalFrameEx()函数中,同样是通过标准状态机模型完成的指令解析,一个巨大无比的switch结构,类似这样:

在C中,switch语句的执行是逐条对比的,也就是说每一条指令在执行的时候都需要从头对比,因为这里的指令集合是不平均分布的,但是我们可以假设每个指令平均需要匹配n次,n > 1,其实是远远大于1的。

具体问题:

是否可以做优化,为什么作者没有做优化? 如果不采用switch状态机,因为指令码也是有编号的,是否可以直接采用类hashtable的形式来做?

附注:

如果此问题很2请亲提出宝贵的意见

相关阅读:

在java开发当中 创建对象时,该使用基本类型还是引用类型?(并说明为什么)

为什么用runtime获取不到uiview的alpha属性?

goagengt最近一直warning,伴随着几个error

请教一个nginx的过滤正则

python爬虫中,使用HTMLParser如何解析获取多个标签中的文本

明明导入了模块,为什么用的时候回出现undefin variable?

CSS布局flex问题

求你们手中关于JS中Deferred的资料

XMPP聊天服务器选择

怎么写promise的链式调用

存有100万个<2^20正整数的文件中找到任意一个不在其中的数

jqueryui与jqueryeasyui冲突的问题

symfony2,odbc,sql server 2000参数化问题

segmentfault直接在文本框里ctrl+v就可以上传截图,是如何实现的?

aws cli工具能用在自己写的服务器上吗

程序发布之后swingworker不能正常工作

用gulp再次自动复制时怎样清除已经复制过去的目标文件?

关于mysql数据库查询问题

js修改id后无法触发事件

Bootstrap的Modal.js里的'click.bs.modal.data-api'在哪里触发?

python 字节码 优化_python,_Python 字节码优化问题,python - phpStudy相关推荐

  1. python判断素数的函数_Python素数prime函数练习_Python源码实操

    Python素数prime函数练习_Python源码实操 素数prime函数练习 1) 写一个函数isprime(x) 判断x是否为素数,如果是素数,返回True,否则返回False def ispr ...

  2. python编码使用ascii编码_Python中的编码问题:ASCII码 Unicoden编码 UTF-8编码

    编码 字符串是一种数据类型,但是,字符串比较特殊的是还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节 ...

  3. python多线程执行同样代码_Python 多线程、多进程 (一)之 源码执行流程、GIL

    一.python程序的运行原理 许多时候,在执行一个python文件的时候,会发现在同一目录下会出现一个__pyc__文件夹(python3)或者.pyc后缀(python2)的文件 Python在执 ...

  4. python源码深度剖析_Python源码剖析——深度探索动态语言核心技术 | 学步园

    8.3  Python虚拟机的运行框架 当Python启动后,首先会进行Python运行时环境的 初始化.注意这里的运行时环境是一个与上一节剖析的执行环境不同的概念.运行时环境是一个全局的概念,而执行 ...

  5. python 字符串转字典 编码_python基础--2(字符串、元组、列表、字典、集合、文件、编码转码)...

    python支持的数据类型 int 整数型 float 浮点型 complex 复数,实数+虚数,虚数部分以"j"或"J"结尾,a+bj或者complex(a, ...

  6. python中int占几个字节_Python中的整型占多少个字节?

    说到计算机中的整型,相信很多人都会联想到32位整型(或者int),是程序员日常生活中用的最多的一种类型.32位整型顾名思义,占用32个位也就是4个字节,取值范围−2,147,483,648~ 2,14 ...

  7. 深入理解 python 虚拟机:令人拍案叫绝的字节码设计

    深入理解 python 虚拟机:令人拍案叫绝的字节码设计 在本篇文章当中主要给大家介绍 cpython 虚拟机对于字节码的设计以及在调试过程当中一个比较重要的字段 co_lnotab 的设计原理! p ...

  8. python 源码安装教程_python安装步骤

    编译安装python3.6的步骤 1.下载python3源码包 2.下载python3编译的依赖包 yum install -y gcc patch libffi-devel python-devel ...

  9. python爬取天气预报源代码_python抓取天气并分析 实例源码

    [实例简介] Python代码抓取获取天气预报信息源码讲解.这是一个用Python编写抓取天气预报的代码示例,用python写天气查询软件程序很简单.这段代码可以获取当地的天气和.任意城市的天气预报, ...

  10. python 源码编译教程_python源码编译

    尝试通过源码自己编译 Python,使用的系统是 Ubuntu14.04 LTS. 首先去官网下载源码,地址:源码下载.下载完成之后,解压源码: 1tar -zxvf Python-2.7.12.tg ...

最新文章

  1. rhel6ACL权限
  2. 定制或外购适配器规格需求列表
  3. lucene 搜索_使用Lucene的搜索服务器搜索Jira问题
  4. 阿里云云效何勉:云原生是“精益实践”的最佳助力
  5. Refusing to install package with name “vue-i18n“ under a package
  6. 【转】百度站长平台MIP引入工具使用心得
  7. Android P (1)---开发指南
  8. 小技巧——直接在目录中输入cmd然后就打开cmd命令窗口
  9. Helm 3 完整教程(十二):Helm 函数讲解(6)字典函数
  10. 几个北邮和交大学霸的公众号,值得学习
  11. GBT 39323-2020 乘用车车道保持辅助(LKA)系统性能要求及试验方法
  12. 戴尔公司大中华区总裁黄陈宏 要烧哪三把火
  13. “币圈老虎机”Uniswap:冒险者的天堂,韭菜的地狱
  14. win10 mac的clover双系统后 win10时间不同步问题
  15. JSP前三章测试改错
  16. 自动化测试之Appium
  17. uni-app 170邀请加入群聊(二)
  18. Linux强制修改root用户密码
  19. 解决时间输出格式带 T 带 000+00:00 输出时间多了个T 返回时间格式带T
  20. mysql数据库出现缓慢_MySQL查询缓慢的N种原因,以及N+1种解决方法

热门文章

  1. Proteus:单片机锁存器控制数码管亮灭
  2. 自定义相机旋转拍照角度
  3. 弘辽科技:拼多多最容易拿到免费流量的两大核心。
  4. RHEL7软件包的管理
  5. Android 浏览器分辨率调整,让Android上的浏览器用设备实际像素打开你的网页
  6. WCF 4.0 进阶系列 – 第十四章 检测服务和路由消息(第四部分)
  7. 湖南工业大学大学计算机教育网,湖南工业大学教务管理系统入口http://jwc.hut.edu.cn/...
  8. python编程基础之二十七
  9. 经典重读《信号与系统》-第一章
  10. centos7 安装MySQL5.7启动报错journalctl -xe 、mysql.sock' (2)处理办法及安装MySQL5.7