开发环境下卡顿问题
问题描述
new Proxy 中 has 中设置 key in window 时,script 执行慢:


未设置 key in window 时: 

这种情况主要出现在开发环境,即 system app 是本地环境的情况。推测原因可能是开发环境下使用 window 上的内容较少,生成环境下将一些无用的代码都抹除掉了。
优化
- 对
window上常用的构造函数进行缓存,让get少执行 - 对构造函数的判断进行优化,让正则判断优先于原型判断
- 对事件监听的内容进行优化,用
map/set结构代替数组结构。
开发环境下


线上环境

解决方案
通过监控发现,proxy 中 get 和 has 耗时较高,因此对这块代码进行优化:(tip: performace 中可以查看源码的具体执行时间,非常方便能看到哪些代码是比较耗时的。)
- 对代理
window的一些全局变量进行缓存,使其尽量少的调用get方法 - 对
get方法的逻辑进行优化,减少复杂度。 - 对
listener代理的逻辑进行优化,减少复杂度
