Performance “反应自然”;“到目前为止下降了”;性能监视器计数不断增加

Performance “反应自然”;“到目前为止下降了”;性能监视器计数不断增加,performance,react-native,Performance,React Native,我最初在我已完成的应用程序中注意到了这个问题,但已经安装了默认的react本机应用程序进行测试,并且我看到性能监视器中的“dropped to far”数字不断攀升,即使没有发生任何事情 这个数字应该会不断增加吗 是的,尽管它并不总是常数 (我假设你的意思是常数,就像在同一个值中一样,尽管如果你的意思是它永不停止,那么你可以忽略它如何工作背后的额外解释。) 要了解到目前为止删除的的逻辑,您可以查看。您将在中找到性能监视器的代码。在其中,您可以看到到目前为止已删除的代码()使用了哪个变量(drop

我最初在我已完成的应用程序中注意到了这个问题,但已经安装了默认的react本机应用程序进行测试,并且我看到性能监视器中的“dropped to far”数字不断攀升,即使没有发生任何事情

这个数字应该会不断增加吗


是的,尽管它并不总是常数

(我假设你的意思是常数,就像在同一个值中一样,尽管如果你的意思是它永不停止,那么你可以忽略它如何工作背后的额外解释。)

要了解到目前为止删除的
的逻辑,您可以查看。您将在中找到性能监视器的代码。在其中,您可以看到到目前为止已删除的
代码()使用了哪个变量(
droppedUIFrames
)。如果您一直按照此操作返回,则会得到
fpsmonitorunnable
类,该类使用
mTotalFramesDropped
变量跟踪到目前为止丢弃的帧()。在这个类中,您只有一个循环来更新正在报告的变量。您感兴趣的线路是:


从中可以看出,是的,该值是一个计数器,在性能监视器运行时,该计数器只会增加,但不会重置。您还可以看到它不是常量(固定值);在你的例子中,它可能碰巧看起来是恒定的,因为你在“hello world”屏幕上,没有发生任何有趣的事情。

因此,根据Michael Cheng的回答,我进一步深入研究了RN代码,找出了设置为16.9,a-la的经典60 fps魔法数字

丢弃帧计数器不断(即不断)增加的原因是RN预计以60fps的速度运行,并且认为任何低于此速度的帧速率都意味着丢弃帧

然而,在使用各种“帧速率”测试应用程序测试了这款平板电脑后,平板电脑的本机帧速率似乎为51.9fps。我不知道这是为什么,这似乎是一个特别任意的数字,但在我所有的测试中,帧率从未超过52,并且大多徘徊在51

所以,为了回答我的问题,“下降到目前为止”意味着有多少帧小于60fps,以及“是否应该继续增加?”;如果设备只能以低于60fps的速度绘制,则为是

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