既然 js 作为一个动态编译语言,效率是它的缺点之一
那能否通过在浏览器加载“编译”之后的 js,在浏览器只将编译之后的 js 转换成机器码,这样会否提高 js 的执行效率呢?
1
hiplon 2019-07-23 10:10:02 +08:00
现在应该浏览器也是在本地“编译” js
|
2
runze 2019-07-23 10:12:19 +08:00
1、浏览器本来就会“编译”
2、asm.js 了解一下? 3、WebAssembly 了解一下? |
3
Sornets OP |
4
singleQ 2019-07-23 10:18:34 +08:00 via Android
jit 了解下
|
6
blodside 2019-07-23 10:34:48 +08:00
你说的就是 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 |
7
dremy 2019-07-23 10:41:46 +08:00 via iPhone
加载编译后的二进制文件,会变得很大,影响加载速度
|
8
flowfire 2019-07-23 10:43:16 +08:00 via iPhone
webassembly 了解一下,另外 js 是动态类型,很难预先优化编译,目前 v8 已经做到很好了
|
9
maichael 2019-07-23 10:43:21 +08:00
js 是动态编程语言,不是“动态编译”语言,选择用解释器,编译器,又或者是 JIT 这种模式来运行,跟语言是无关的。
|
10
misaka19000 2019-07-23 10:46:20 +08:00
V8 有 JIT 吧,执行效率已经很高了
|
11
nigelvon 2019-07-23 10:47:24 +08:00
动态编译不是语言问题,弱类型才是语言问题。
|
12
mystorp 2019-07-23 10:54:24 +08:00
新出的 quickjs 就是这样,了解一下
|
13
sunjourney 2019-07-23 11:24:13 +08:00
既然 js 作为一个动态编译语言,效率是它的缺点之一
笑了 |
14
azh7138m 2019-07-23 12:49:02 +08:00 via Android
|
15
otakustay 2019-07-23 13:32:37 +08:00
JS 有一个 bytecode 的提案,现在不知道 stage 几了……用 js 做 wasm 不见得比 js 快就是了
|
16
love 2019-07-23 14:05:13 +08:00 via Android
js 瓶颈完全不在执行效率。
要说缺点,现在只剩下了对各种错误太宽容了,如果像 python 这种程度就可以了,这样想动态就直接用,想静态就用 ts,完美了 |
17
serge001 2019-07-26 12:21:55 +08:00
js 是可以预先成编译成字节码然后在 node 中运行的,可以搜 node 编译 字节码
|