JavaScript 代码优化工具 Prepack

BSD
JavaScript
跨平台
Facebook
2017-05-04
两味真火
温馨提示:该项目除了使用 BSD 协议授权外,还需遵守附加的专利授权

官方宣称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)环境依赖阶段,通过从环境中获得的值执行所有剩余的计算过程来拼凑具体的堆,等等

  • 总结循环和递归

长期 - 利用Prepack作为一个平台
  • JavaScript Playground - 通过调整JavaScript引擎体验JavaScript特性,这些引擎由JavaScript所编写,托管在浏览器中;你可以把它想象成一个“Babel虚拟机”,实现了不能被编译的JavaScript新特性

  • 捉Bug - 发现异常崩溃、执行问题……

  • 效果分析,例如检测模块工厂函数可能的副作用或强制纯净注释

  • 类型分析

  • 信息流分析

  • 调用图推理,允许内联和代码索引

  • 自动测试生成,利用符号执行的特性与约束求解器(Constraint Solver)结合来计算执行不同执行路径的输入

  • 智能模糊(Smart Fuzzing)

  • JavaScript沙盒 - 以不可观察的方式有效地测试JavaScript代码

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

的码云指数为
超过 的项目
加载中

评论(2)

mz肉肉男
mz肉肉男
(function() { function test(x) { this[x] = [x]; } for (var i = 0; i < 10; i++) { global.result = new test(i); } })(); https://prepack.io/repl.html
我和上帝打个赌
希望能帮到大家 http://www.codeyyy.com/javascript/index.html

Prepack v0.2.19 发布,JavaScript 代码优化工具

Prepack 是一个优化 JavaScript 源代码的工具。它是一个 JavaScript 的部分求值器(Partial Evaluator),可在编译时执行原本在运行时的计算过程,并通过重写 JavaScript 代码来提高其执行效...

2018/01/21 07:24

Facebook 开源 JavaScript 代码优化工具 Prepack

5月4日,Facebook开源团队技术作者Joel Marcey在Hacker News社区发布一则《Prepack帮助提高JavaScript代码的效率》,引起了社区的广泛讨论。 官方宣称Prepack是一个优化JavaScript源代码的工...

2017/05/04 15:52

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无问答

前端进阶 -js 性能优化利器:prepack(8)

1. js 性能优化 js 性能优化不外乎从三个角度入手: 1.1 开发者在编写程序时,尽量避免不必要的冗余代码,包括冗余的第三方库 首先要避免不必要的冗余代码,包括不必要的闭包、不必要的变量与...

2018/09/22 21:50
8
0
React Hooks 实用指南

前言 在React Conf 2018会议中,Dan Abramov 介绍了 React Hooks。官方的描述为 Hook是一项新功能提案,可让您在不编写类的情况下使用状态和其他React功能。 它们目前处于React v16.7.0-alp...

2018/11/30 10:38
16
0

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部