webAssembly-note

  1. 2020-01-23 17:02:55 webAssembly
    1. JIT VS AOT,在重型计算面前仍然力不从心

2020-01-23 17:02:55 webAssembly

That’s because you can make better designs when you focus on solving concrete use cases.
由于 Dom 渲染和 JavaScript 引擎是相对独立的,这两个模块相互访问的时候,都是通过接口访问。由于 JavaScript 单线程的特性,这种访问只能是单工的。

JIT VS AOT,在重型计算面前仍然力不从心

刚才谈到,V8 引擎首次将 JIT 技术引入 JavaScript 当中,大幅提升了执行速度。那么首先我们需要理解什么是 JIT,以及 AOT。
AOT: Ahead-of-Time compilation
必须是强类型语言,编译在执行之前,编译直接生成 CPU 能够执行的二进制文件,执行时 CPU 不需要做任何编译操作,直接执行,性能最佳。
JIT: Just-in-Time compilation
没有编译环节。执行时根据上下文生成二进制汇编代码,灌入 CPU 执行。JIT 执行时,可以根据代码编译进行优化,代码运行时,不需要每次都翻译成二进制汇编代码,V8 就是这样优化 JavaScript 性能的。

what is webAssembly
https://www.cnblogs.com/detectiveHLH/p/9928915.html
但是除了逻辑复杂、代码量大,还有另一个原因是JavaScript这门语言本身的缺陷,JavaScript没有静态变量类型。这门解释型编程语言的作者Brendan Eich,仓促的创造了这门如果被广泛使用的语言,以至于JavaScript的发展史甚至在某种层面上变成了填坑史。为什么说没有静态类型会降低效率。这会涉及到一些JavaScript引擎的一些知识。
在项目运行的过程中,引擎会对执行次数较多的function记性优化,引擎将其代码编译成Machine Code后打包送到顶部的Just-In-Time(JIT) Compiler,下次再执行这个function,就会直接执行编译好的Machine Code。但是由于JavaScript的动态变量,上一秒可能是Array,下一秒就变成了Object。那么上一次引擎所做的优化,就失去了作用,此时又要再一次进行优化。

https://hacks.mozilla.org/2018/06/babys-first-rustwebassembly-module-say-hi-to-jsconf-eu/


--Write by Marcustar,关关雎鸠,在河之洲
目录
Download 相册