V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
SlipStupig
V2EX  ›  Python

关于 python 虚拟机问题

  •  
  •   SlipStupig · 2016-05-06 12:10:51 +08:00 · 2871 次点击
    这是一个创建于 2905 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前我所知道就只有两种虚拟机:
    1.基于堆栈的
    2.基于寄存器的
    如果现在 python 移植成基于寄存器的虚拟机性能会有提升吗?
    6 条回复    2016-05-06 14:36:24 +08:00
    janxin
        1
    janxin  
       2016-05-06 12:24:17 +08:00
    性能提升不全部是虚拟机使用哪种形式的问题吧,那么多 Python 模块(Py/C)是不是不用修改就能用呢?这一条限制就够了。
    neoblackcap
        2
    neoblackcap  
       2016-05-06 12:24:45 +08:00
    openJDK 的实现是基于栈的, Dalvik 是基于寄存器的。你觉得 openJDK 的执行效率比 Dalvik 差吗?
    SlipStupig
        3
    SlipStupig  
    OP
       2016-05-06 12:31:31 +08:00
    @neoblackcap 对 java 不太懂,具体情况没研究过
    neoblackcap
        4
    neoblackcap  
       2016-05-06 12:41:57 +08:00
    @SlipStupig CPython 若是按你的说法,只会成为一个难移植的产物。效率按道理会提高,但是相对于付出的成本,我觉得就很难说划得来。若是追求效率,为什么不学 Pypy 呢?搞个 JIT ,比什么都强。
    mind3x
        5
    mind3x  
       2016-05-06 12:43:25 +08:00
    @neoblackcap 『 openJDK 的实现是基于栈的, Dalvik 是基于寄存器的』说法是错的。

    JVM 作为一种抽象的虚拟机,其字节码的定义是基于栈计算的。
    DalvikVM 作为一种抽象的虚拟机,其指令的定义是基于寄存器的。

    实际在实现的时候,只要做了 JIT 或 AOT ,最后跑起来都经过各种编译优化变成本地代码,和 VM spec 是基于栈还是寄存器的没多大关系。这两种的区别主要是体现在解释器的实现上。

    OpenJDK 的 JIT 实现是 Sun 经典的 HotSpot JIT , Dalvik 现在的 ART 既有 AOT 也有 JIT(在 N 里面),这两种实现都不能说是基于栈或基于寄存器,因为是 VM implementation 而不是 VM spec 。
    neoblackcap
        6
    neoblackcap  
       2016-05-06 14:36:24 +08:00
    @mind3x 我知道 JIT 之后就是跟对应平台 native code 一个样。其实我主要就是想表示仅进行到字节码那部分的效率比较。因此我后面才会说 JIT 。
    可能我举的例子不好吧,我主要是想举一个栈实现的虚拟机跟基于寄存器实现的虚拟机例子,并说明两者的执行效率并没有想象中的差距那么大。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2374 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:07 · PVG 00:07 · LAX 09:07 · JFK 12:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.