React Native“性能监视器计数”持续增加

20

我最初在我的已完成应用中发现了这个问题,但是我安装了默认的React Native应用程序进行测试,即使没有发生任何事情,“迄今为止丢弃”的数字在性能监视器中不断上升。

这个数字应该不停地增加吗?

迄今为止丢弃

2个回答

14

是的,尽管它并不总是恒定的。

(我假设您所说的“恒定”是指相同的值,但如果您只是指它永远不会停止,那么您可以忽略有关其工作原理的额外解释。)

要理解“到目前为止下降”的逻辑,您可以查看React Native代码库。您将在FpsView.java文件中找到性能监视器的代码。在其中,您可以看到用于“到目前为止下降”代码的变量(droppedUIFrames)(第67行)。如果您一直跟踪到底部,您就会到达使用mTotalFramesDropped变量来跟踪“到目前为止丢失的帧数”的FramesDroppedRunnable类(第79行)。在这个类中,您只是更新报告的变量的循环。您将有兴趣的行是在第90行

mTotalFramesDropped += mFrameCallback.getExpectedNumFrames() - mFrameCallback.getNumFrames();

从这个可以看出,是的,这个值是一个计数器,它只会增加而不会在性能监视器运行时被重置。您还可以看到它不是常量(固定值);在你的情况下,它可能显得恒定,因为您处于“hello world”屏幕,没有发生任何有趣的事情。


12
根据 Michael Cheng 的回答,我进一步研究了 RN 代码,并找到了 EXPECTED_FRAME_TIME(预期帧间隔时间) ,其设置为16.9,即经典的60fps魔法数字。 掉帧计数器不断增加的原因是RN期望以60fps运行,并认为任何低于此帧率的帧率意味着丢帧。
然而,通过各种“帧率”测试应用程序对这个特定的平板电脑进行测试后,该平板电脑的本机帧率似乎为51.9fps。我不知道为什么会有这样一个特别武断的数字,但在我所有的测试中,帧率从未超过52,大多数时候保持在51左右。
因此,回答我的问题,“dropped so far”的意思是指低于60fps的帧数有多少,而“它应该不断增加吗?”;如果设备只能绘制低于60fps的帧,则是肯定的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接