开发者社区> 行者武松> 正文

Prepack——JavaScript代码优化工具

简介:
+关注继续查看

官方宣称Prepack是一个优化JavaScript源代码的工具,实际上它是一个JavaScript的部分求值器(Partial Evaluator),可在编译时执行原本在运行时的计算过程,并通过重写JavaScript代码来提高其执行效率。Prepack用简单的赋值序列来等效替换JavaScript代码包中的全局代码,从而消除了中间计算过程以及对象分配的操作。对于重初始化的代码,Prepack可以有效缓存JavaScript解析的结果,优化效果最佳。

PrepackJavaScript代码优化工具

官方提供的Prepack优化示例:


  1. /* Hello World */// Input(function () { 
  2.   function hello() { return 'hello'; } 
  3.   function world() { return 'world'; } 
  4.   global.s = hello() + ' ' + world(); 
  5. })();// Output(function () { 
  6.   s = "hello world"
  7. })(); 

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仍处于早期开发阶段,尚未准备好在生产环境中使用,官方建议仅尝试使用,并欢迎提供反馈以帮助修复错误。


作者:佚名

来源:51CTO

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
HTML + CSS + JS 利用邮编查询 API 实现邮编查询工具
邮政编码是地址信息的重要组成部分,可以帮助快递公司、物流公司等对地址进行快速、准确的识别和派送。因此,邮编查询工具应用在许多业务场景中都有广泛的应用,例如:电商平台、物流公司、金融机构等。通过使用邮编查询 API,我们可以快速实现一个邮编查询工具应用,方便用户查询地址对应的邮政编码,提高业务流程的效率。
30 0
JavaScript工具函数汇总
JavaScript工具函数汇总
55 0
JS逆向加密解密工具Crypto Magician、乐易助手、WT-JS 下载使用
JS逆向加密解密工具Crypto Magician、乐易助手、WT-JS 下载使用
181 0
为了深入学习JS我写了一个JS工具库 | 从零到一发布到npm上(2)
为了深入学习JS我写了一个JS工具库 | 从零到一发布到npm上(2)
66 0
为了深入学习JS我写了一个JS工具库 | 从零到一发布到npm上(1)
自从工作以来,写项目的时候经常需要手写一些方法和引入一些js库 JS基础又十分重要,于是就萌生出自己创建一个JS工具库并发布到npm上的想法 于是就创建了一个名为learnjts的项目,在空余时间也写了几个工具函数,后续还会再继续增加... 这篇文章就是一篇实战文章,我把自己创建项目,发布到npm,以及遇到的问题和解决方案全都记录了下来,如果你也想创建一个自己的js工具库,可以根据这篇文章一步一步的尝试一下
45 0
JavaScript工具库——Lodash.js介绍安装及使用
JavaScript工具库——Lodash.js介绍安装及使用
125 0
强大的JavaScript工具管理器Volta
强大的JavaScript工具管理器Volta
345 0
很方便的javascript开发工具--火狐的Scratchpad(代码草稿本)工具
火狐的console控制台可以很方便的测试单行js代码,就像这样:
33 0
【译】用其他语言来构建JavaScript的工具--这是新的趋势吗?
【译】用其他语言来构建JavaScript的工具--这是新的趋势吗?
47 0
js前端使用AES加解密及在线解密工具验证
js前端使用AES加解密及在线解密工具验证
226 0
+关注
行者武松
杀人者,打虎武松也。
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
在 IoT 设备进行 JavaScript 开发的探索之路
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关实验场景
更多