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)环境依赖阶段,通过从环境中获得的值执行所有剩余的计算过程来拼凑具体的堆,等等
总结循环和递归
长期 - 利用Prepack作为一个平台
JavaScript Playground - 通过调整JavaScript引擎体验JavaScript特性,这些引擎由JavaScript所编写,托管在浏览器中;你可以把它想象成一个“Babel虚拟机”,实现了不能被编译的JavaScript新特性
捉Bug - 发现异常崩溃、执行问题……
效果分析,例如检测模块工厂函数可能的副作用或强制纯净注释
类型分析
信息流分析
调用图推理,允许内联和代码索引
自动测试生成,利用符号执行的特性与约束求解器(Constraint Solver)结合来计算执行不同执行路径的输入
智能模糊(Smart Fuzzing)
JavaScript沙盒 - 以不可观察的方式有效地测试JavaScript代码
目前Prepack仍处于早期开发阶段,尚未准备好在生产环境中使用,官方建议仅尝试使用,并欢迎提供反馈以帮助修复错误。
时间:2018-10-09 22:51 来源: 转发量:次
声明:本站部分作品是由网友自主投稿和发布、编辑整理上传,对此类作品本站仅提供交流平台,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,不为其版权负责。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。
相关文章:
相关推荐:
网友评论: