Web检查器使用“框架”进行概要分析:在时间轴中没有出现性能问题的原因

前端之家收集整理的这篇文章主要介绍了Web检查器使用“框架”进行概要分析:在时间轴中没有出现性能问题的原因前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我刚刚看过Google I / O会话 Jank Busters: Building Performant Web Apps,演讲者解释了如何在Chrome网络浏览器时间轴中使用新的“框架”视图.

这是一个在我正在开发的页面上滚动时录制的示例:

你可以看到,在一些帧中有很大的延迟,但在时间轴上没有任何明显的原因(黄色“定时器发生”事件之间存在很大差距).如何解决性能问题,以提高帧速率?

解决方法

你的例子实际上看起来并不太糟糕.您的代码运行速度快,浏览器只能以60fps呈现,所以它花费了一段时间(最多16ms)等待下一个渲染循环.

这是Chrome开发人员工具时间轴面板的“框架”视图中特别令人担忧的快照.

根据documentation

>灰色区域表示DevTools没有测试的活动,而Chrome团队则致力于保持尽可能小的区域
>清除区域表示显示刷新周期之间的空闲时间,这通常不是问题,特别是如果区域带来达到60fps线,因为这只是Chrome等待在监视器的vsync上传送帧

酒吧底部的黄色和绿色区域呈现淡黄色和绿色区域,表明事件处理,绘画和合成都运行得很快 – 足够快到落在水平线下,表示30fps阈值,并且可能比60fps阈值大多数时间(行未显示)

要了解更多信息,请打开开发工具选项并检查:

启用此功能后,您将在“RECORDS”栏中看到灰色区域:

每个灰色区域显示渲染器线程占用的时间段.如果你看到很多差距,那么浏览器可能是GPU绑定的.

Chrome的工程师Nat Duca在this post提供了更多信息:

GPU boundedness typically comes from two things:

  1. having -webkit-filter,preserves3D properties on elements. Those eat away at the gpu like… um,something hungry.
  2. having too many big layers.

Layers? “Show composited layer borders” to see them. The place most folks get in trouble is not layer count really,but rather the area of the layers.

Rule of thumb: most computers are designed so that they can touch every pixel on its main screen about 4 times. As a really simple example,a 2-year-old MacBook Air is provisioned for its LCD’s size. When you plug in a 30″ monitor that has more than one layer,it starts getting GPU bound.

Why does this matter? [Handwaving,] a layer touches a pixel once when we draw the screen. If a layer is the size of your window,e.g. you’ve got a width=100% height=100% div with -webkit-transform: translateZ(0),then you’re touching every pixel of the screen once. So,count up the the area of your layers and if you exceed 4 times the area of your monitor,you may not be able to go to space [because you’re GPU bound].

A good test for gpu boundedness is to shrink the window size by 1/2 in each dimension. If things stay slow,then something else is happening… if things get faster,you were probably hitting the GPU.

在我的情况(显示在最上面的图片),我仍然试图找出导致灰色条纹的原因.代码没有改变,性能过去很好.可能是因为某些原因,较新版本的Chrome(今天运行的是31.0.1650.57 m)与此代码不同.再次,灰色区域表示渲染线程忙于未测量的代码,所以很难说出发生了什么.

猜你在找的HTML相关文章