Rob*_*ene 10 google-chrome frame-rate google-chrome-devtools
我想检索测量的性能记录的平均fps.
到目前为止,我只能通过像这样悬停在帧上来获得每帧的持续时间和帧数: 
为了获得所有帧的平均fps,我必须手动逐个求和它们,这非常不方便.
wOx*_*xOm 18
你可以使用devtools-for-devtools.
显示所有帧的FPS:
UI.panels.timeline._flameChart._model._frameModel._frames.slice(1).map(f => +(1000 / f.duration).toFixed(1))
显示平均FPS:
+UI.panels.timeline._flameChart._model._frameModel._frames.slice(1).map(f => 1000 / f.duration).reduce((avg, fps, i) => (avg*i + fps) / (i+1), 0).toFixed(1)
您可以将此代码保存为devtools Snippets面板中的片段,并在上面的步骤2之后调用它.
我要感谢 @wOxxOm 在上面的答案中指出如何访问 DevTools for DevTools 。
然而,计算平均 FPS 的代码不太正确。例如,如果有一帧需要 1 秒才能渲染,则该帧的 fps 为 1。如果有另一个帧需要花费(1000 / 60)毫秒来渲染,则该帧的 fps 为 60。原始代码将给出(60 + 1) / 2这两个帧的平均 fps,这是不正确的。
正确的平均 fps 是总帧数除以总持续时间。在本例中,它是2 / (1 + 1 / 60)fps。
实现这一点的一种方法是:
function averageFps() {
let frames = UI.panels.timeline._flameChart._model._frameModel._frames;
let duration = (frames[frames.length - 1].endTime - frames[0].startTime) / 1000;
let average = frames.length / duration
return +average.toFixed(2);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3106 次 |
| 最近记录: |