专栏名称: 网络大数据
打造中国最专业的网络大数据科学门户网站,提供新闻动态、研究资料、测量工具、数据报告、在线测量等各项信息及服务,供IDC,CDN,ICP和普通大众共同学习进步。
目录
相关文章推荐
艺恩数据  ·  粉底趋势新风尚,打造你的“妆”点人生 ·  昨天  
CDA数据分析师  ·  CDA 认证考试内容入选宁波工程学院校级选修课 ·  1 周前  
数据派THU  ·  2024大数据挑战赛全国六强团队获奖经验+p ... ·  6 天前  
数据派THU  ·  2024大数据挑战赛全国六强团队获奖经验+p ... ·  1 周前  
51好读  ›  专栏  ›  网络大数据

Prepack——JavaScript代码优化工具

网络大数据  · 公众号  · 大数据  · 2017-06-07 17:57

正文

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


官方提供的Prepack优化示例:

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仍处于早期开发阶段,尚未准备好在生产环境中使用,官方建议仅尝试使用。


网络大数据

 (ID:raincent_com


网络大数据 www.raincent.com

由清华CDN实验室于2011年创办,

致力于打造中国最专业的网络大数据科学门户网站。



识别二维码,关注网络大数据