Dav*_*ine 15 performance react-native
我最初在我已完成的应用程序中注意到了这个问题,但是已经安装了默认的react-native应用程序进行测试,而且我看到即使没有发生任何事情,仍然会在perf监视器中"丢弃到目前为止"数字不断增加.
这个数字应该不断增加吗?
是的,虽然它并不总是不变的.
(我假设你的意思是在同一个值中保持不变,尽管如果你只是意味着它永远不会停止,那么你可以忽略它背后的额外解释.)
要了解其逻辑dropped so far,您可以查看React Native代码库.您将在FpsView.java文件中找到perf监视器的代码.在其中,您可以看到代码droppedUIFrames使用了什么变量()dropped so far(第67行).如果你一直跟着这个,你会到达FPSMonitorRunnable使用该mTotalFramesDropped变量的类来跟踪到目前为止丢失的帧(第79行).在这个类中,你只需要一个循环来更新报告的变量.你会感兴趣的是第90行的这一行:
mTotalFramesDropped += mFrameCallback.getExpectedNumFrames() - mFrameCallback.getNumFrames();
Run Code Online (Sandbox Code Playgroud)
从这里可以看出,是的,这个值是一个计数器,它只是增加但在perf监视器运行时永远不会被重置.你还可以看到它不是常数(固定值); 在你的情况下,它可能恰好显得不变,因为你在"hello world"屏幕上没有任何有趣的事情发生.
因此,根据Michael Cheng的答案,我进一步研究了RN代码,并挖出了EXPECTED_FRAME_TIME(其设置为16.9),这是经典的60fps魔术数字。
丢帧计数器持续(即持续)增加的原因是,RN希望以60fps的速度运行,并认为任何低于此速率的帧速率都意味着丢帧。
但是,在使用各种“帧率”测试应用程序测试了该特定平板电脑之后,该平板电脑的本机帧频似乎为51.9fps。我不知道为什么会这样,这似乎是一个特别随意的数字,但是在我的所有测试中,帧率从未超过52,而大多徘徊在51。
因此,要回答我的问题,“到目前为止丢失”是指有多少帧的帧数低于60fps,并且“它应该持续增加吗?”;是的,如果设备无论如何只能以低于60fps的速度绘画。