V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Sornets
V2EX  ›  问与答

不懂就问,关于 js 的一个问题

  •  
  •   Sornets · Jul 23, 2019 · 1982 views
    This topic created in 2483 days ago, the information mentioned may be changed or developed.

    既然 js 作为一个动态编译语言,效率是它的缺点之一

    那能否通过在浏览器加载“编译”之后的 js,在浏览器只将编译之后的 js 转换成机器码,这样会否提高 js 的执行效率呢?

    17 replies    2019-07-26 12:21:55 +08:00
    klh
        1
    klh  
       Jul 23, 2019
    现在应该浏览器也是在本地“编译” js
    runze
        2
    runze  
       Jul 23, 2019
    1、浏览器本来就会“编译”
    2、asm.js 了解一下?
    3、WebAssembly 了解一下?
    Sornets
        3
    Sornets  
    OP
       Jul 23, 2019
    @runze
    @hiplon 我是说直接 script 标签 src 属性填写的,就是编译之后的 js 文件的地址,这样就能省掉编译的时间,不过看起来好像意义不大
    singleQ
        4
    singleQ  
       Jul 23, 2019 via Android
    jit 了解下
    Sornets
        5
    Sornets  
    OP
       Jul 23, 2019
    @runze
    @singleQ 感谢,我去了解一下
    blodside
        6
    blodside  
       Jul 23, 2019
    你说的就是 WebAssembly,用这项技术使得现在可以在浏览器运行 windows 了。
    在浏览器里运行 win2000,原理是用 WebAssembly 跑 qemu: https://bellard.org/jslinux/vm.html?url=https://bellard.org/jslinux/win2k.cfg&mem=192&graphic=1&w=800&h=600
    dremy
        7
    dremy  
       Jul 23, 2019 via iPhone
    加载编译后的二进制文件,会变得很大,影响加载速度
    flowfire
        8
    flowfire  
       Jul 23, 2019 via iPhone
    webassembly 了解一下,另外 js 是动态类型,很难预先优化编译,目前 v8 已经做到很好了
    maichael
        9
    maichael  
       Jul 23, 2019
    js 是动态编程语言,不是“动态编译”语言,选择用解释器,编译器,又或者是 JIT 这种模式来运行,跟语言是无关的。
    misaka19000
        10
    misaka19000  
       Jul 23, 2019
    V8 有 JIT 吧,执行效率已经很高了
    nigelvon
        11
    nigelvon  
       Jul 23, 2019
    动态编译不是语言问题,弱类型才是语言问题。
    mystorp
        12
    mystorp  
       Jul 23, 2019
    新出的 quickjs 就是这样,了解一下
    sunjourney
        13
    sunjourney  
       Jul 23, 2019
    既然 js 作为一个动态编译语言,效率是它的缺点之一

    笑了
    azh7138m
        14
    azh7138m  
       Jul 23, 2019 via Android
    @blodside
    原理是用 WebAssembly 跑 qemu

    还真是章口就莱
    jslinux 和 qemu 只是同一个作者,前者是一个纯 js 实现
    otakustay
        15
    otakustay  
       Jul 23, 2019
    JS 有一个 bytecode 的提案,现在不知道 stage 几了……用 js 做 wasm 不见得比 js 快就是了
    love
        16
    love  
       Jul 23, 2019 via Android
    js 瓶颈完全不在执行效率。
    要说缺点,现在只剩下了对各种错误太宽容了,如果像 python 这种程度就可以了,这样想动态就直接用,想静态就用 ts,完美了
    serge001
        17
    serge001  
       Jul 26, 2019
    js 是可以预先成编译成字节码然后在 node 中运行的,可以搜 node 编译 字节码
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3065 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 57ms · UTC 05:35 · PVG 13:35 · LAX 22:35 · JFK 01:35
    ♥ Do have faith in what you're doing.