flutter与RN比较:
- flutter不支持JIT ,默认是AOT , RN采用的是解释执行,也就是JIT
- flutter 没有JSX 这种语法糖,所有控件都是widget,是很灵活,但开发效率不高,代码也比较难看。而且当你尝试通过{html}进行插入html代码时, React会自动将html转为字符串,故React可部分防止XSS攻击
- flutter 使用dart语言,生态环境没有JS这么丰富,web同学学习成本高
JSCore的坑:
1.所有接口底层都会加锁,因此不能使用多线程,只能使用多个JSContext,但传递数据会比较麻烦
2.创建虚拟机自动在当前线程创建 RunLoop
如果你在主线程创建了 JSContext,就算后期只在辅助线程使用,主线程依然会有一个 JS 的 RunLoop 定时回调,并且会给主线程加锁,如果这时刚好你的辅助线程需要同步主线程,就直接死锁了。
3.不支持 JIT. 内部用的是baselineJIT 和LLINT等,不是真正的JIT? (存疑)
4.不支持 asm.js 和 wasm,阉割版的asm(存疑)
关于JIT和AOT
JIT: 运行时编译,执行慢、安装快、外存占用小、运行时内存占用大
AOT: 安装时编译为机器码,安装慢、外存占用大、 运行时占用内存少、启动速度快,
编译器优化手段: 寄存器的分配,控制流图的简化,公共子表达式消除,死代码消除和稀疏条件常量传播
网友评论