Prepack——JavaScript代码优化工具
官方宣称Prepack是一个优化JavaScript源代码的工具,实际上它是一个JavaScript的部分求值器(Partial Evaluator),可在编译时执行原本在运行时的计算过程,并通过重写JavaScript代码来提高其执行效率。Prepack用简单的赋值序列来等效替换JavaScript代码包中的全局代码,从而消除了中间计算过程以及对象分配的操作。对于重初始化的代码,Prepack可以有效缓存JavaScript解析的结果,优化效果最佳。
官方提供的Prepack优化示例:
/* Hello World */// Input(function () { function hello() { return 'hello'; } function world() { return 'world'; } global.s = hello() + ' ' + world(); })();// Output(function () { s = "hello world"; })();
Prepack团队对未来的规划如下:
短期
- 稳定现有功能集,用于预优化(Prepack)React Native代码包
- 集成React Native工具链
- 根据React Native所用模块系统的假设来构建优化
中期
- 进一步优化序列化(Serialization),包括:消除不暴露特性(identity)的对象;消除未使用的导出属性,等等
- 预优化每个函数、基本代码块、语句、表达式
- 与ES6保持完全一致
- 支持广泛的模块系统
- 假设ES6支持某些功能,延迟完成或直接忽略Polyfill应用
- 进一步实现Web和Node.js环境中的兼容性目标
- 深入集成JavaScript虚拟机,改进堆反序列化过程,包括 :暴露“对象懒初始化”的概念 - 以一种JavaScript无感知的方式,在首次使用对象时对其进行初始化;通过专门的字节码提高普通对象创建的编码效率;将代码分为两个阶段:1) 非环境依赖阶段,虚拟机可以安全地捕获并恢复生成的堆;2)环境依赖阶段,通过从环境中获得的值执行所有剩余的计算过程来拼凑具体的堆,等等
- 总结循环和递归
相关推荐
86284457 2020-11-10
wanyi0 2020-11-03
PncLogon 2020-08-16
zuixin 2020-05-12
zhangskd 2020-05-10
CloudXli 2020-05-06
ELEMENTS爱乐冬雨 2020-04-21
ALiDan 2020-03-07
86921239 2020-01-13
shangs00 2020-01-08
82921934 2019-12-23
85457218 2013-08-28
84417619 2013-08-26
xhqiang 2019-11-17
从早忙到晚的闲人 2019-11-07
MYzuiai 2019-11-05
rainchxy 2019-11-05
屠龙石头 2013-12-27
晏 2019-11-04