博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Prepack——JavaScript代码优化工具
阅读量:6869 次
发布时间:2019-06-26

本文共 1333 字,大约阅读时间需要 4 分钟。

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

官方提供的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

转载地址:http://xxcfl.baihongyu.com/

你可能感兴趣的文章
meta name="viewport" content="width=device-width,initial-scale=1.0" 解释
查看>>
mshup总结
查看>>
舒服的颜色2
查看>>
Android 用户界面---通知(Notifications)概要
查看>>
linux下挂载U盘
查看>>
防SQL注入 记
查看>>
创业公司该不该被收购?(转)
查看>>
更改visio的默认线粗方法
查看>>
单例的使用总结
查看>>
PHP获取本周第一天和最后一天
查看>>
Razor练习4
查看>>
【OpenStack】OpenStack系列16之OpenStack镜像制作
查看>>
STL algorithm源代码:stl_algo.h
查看>>
VK Cup 2016 - Qualification Round 2 C. Road Improvement dfs
查看>>
Linux下文件重命名、创建、删除、修改及保存文件
查看>>
判断IP是否为爬虫IP
查看>>
Linux 内核使用的 GNU C 扩展
查看>>
Android 之 用WebView显示网页
查看>>
go——搭建Win7下的Go开发环境
查看>>
ubuntu14.04 中国源
查看>>