4

我正在测试一个我的朋友注意到的测试用例。他在循环中使用 window.innerheight,并且 fps 出现了非常显着的下降。

这是我为测试它而创建的 jsperf 的链接http://jsperf.com/innerheight

我能想出的唯一解释是,这是一个吸气剂,每次调用都会计算实际高度。那正确吗?有什么文件可以验证吗?

4

2 回答 2

6

这个问题是几年前发布的,但以防其他人在这里遇到类似的结果。

从这个博客

问题是 WebKit 几乎每次使用类似于 getBoundingClientRect 的东西时都喜欢重新计算 dom 的布局。(即使获取 window.innerHeight/innerWidth 也会强制重新计算)......所有从 DOM 获取任何计算尺寸的调用都应该被缓存或避免。

在初始化和每次调整大小时缓存窗口尺寸一次显着提高了我的性能。

于 2016-10-26T21:34:02.260 回答
0

在您的第一个循环(innerheight)中,您正在访问一个 objects 属性并将其分配给h. 在第二个循环(缓存)中,您只有h. 当然,缓存的会更快。

于 2012-07-14T19:56:16.703 回答