JavaScript 代码优化工具 Prepack
- 授权协议: BSD
- 开发语言: JavaScript
- 操作系统: 跨平台
- 软件首页: https://prepack.io/
- 软件文档: https://github.com/facebook/prepack/blob/master/README.md
- 官方下载: https://github.com/facebook/prepack
软件介绍
官方宣称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)环境依赖阶段,通过从环境中获得的值执行所有剩余的计算过程来拼凑具体的堆,等等
总结循环和递归
JavaScript Playground - 通过调整JavaScript引擎体验JavaScript特性,这些引擎由JavaScript所编写,托管在浏览器中;你可以把它想象成一个“Babel虚拟机”,实现了不能被编译的JavaScript新特性
捉Bug - 发现异常崩溃、执行问题……
效果分析,例如检测模块工厂函数可能的副作用或强制纯净注释
类型分析
信息流分析
调用图推理,允许内联和代码索引
自动测试生成,利用符号执行的特性与约束求解器(Constraint Solver)结合来计算执行不同执行路径的输入
智能模糊(Smart Fuzzing)
JavaScript沙盒 - 以不可观察的方式有效地测试JavaScript代码
目前Prepack仍处于早期开发阶段,尚未准备好在生产环境中使用,官方建议仅尝试使用,并欢迎提供反馈以帮助修复错误。
Game Programming Patterns
Robert Nystrom / Genever Benning / 2014-11-2 / USD 39.95
The biggest challenge facing many game programmers is completing their game. Most game projects fizzle out, overwhelmed by the complexity of their own code. Game Programming Patterns tackles that exac......一起来看看 《Game Programming Patterns》 这本书的介绍吧!
