我对react本机应用程序的性能有一些疑问。
我正在开发一个react原生应用程序(RN0.62.2)。我正在各种IOS模拟器以及一个真正的设备上进行测试(iPhone 7,IOS13.3)。
我主要使用模拟器,因为这是检查代码输出的最快方法,但是当我在iPhone 7上测试时,我看到了一些性能问题。
首先:我使用的是react导航。当我在模拟器上打开perf监视器并导航到一个新的屏幕(在同一个堆栈导航器中)时,JS线程将有大约6-8个帧(从60到52-54)。在真正的设备上有18-20帧(从60到40-42)。我导航到完全相同的屏幕。
其次,通过需求加载本地图像。在模拟器上,它们几乎立刻就出现了。在真正的设备上,它们需要一段时间才能出现。例如,我有一个带有背景图像的屏幕。在模拟器上,它立即显示。然而,在真正的设备上,加载大约需要一秒钟。
我在我的应用程序中使用了很多动画。我在UI线程上使用reanimated来运行动画。在模拟器中,他们都工作非常顺利,但在真正的设备上,他们似乎有一些问题。它们不像在模拟器上那么光滑。
另一件事:当在文本输入中输入某些文本时(文本在通过onChangeText={v => setValue(v)}输入时存储在useState变量中。帧在模拟器上下降约6-8帧,但在实际设备上再次下降约18-20帧。
我现在的问题是:性能差异的原因可能是什么?我想出了一些可能的答案,其中一个(或多个)是正确的吗?
原因1:地铁服务器
我正在实际设备上测试,所以react本机代码仍然在我的笔记本电脑上。这个应用程序还没有在我的手机上运行,所以所有的请求都通过电缆连接我的手机和我的笔记本电脑。这导致了一些滞后。
原因2:旧设备
我的iphone 7太旧了。我正在运行ios 13.3,但是iphone已经有将近4年的历史了。然而,当我在iphone 7模拟器(ios 11.4)上进行测试时,一切都很顺利。
我还注意到了一些奇怪的事情:在模拟器中运行同一个应用程序会消耗大约双倍内存,然后在真正的设备上运行。在模拟器上的perf监视器中,当我打开应用程序或执行一些操作时,所使用的RAM内存比实际设备上的内存要多(大约30-40 mb,有时在70-80mb,在模拟器类型和ios版本上不适用)。
我还没有用版本构建来测试它,因为我的应用程序还远没有完成。通过地铁服务器进行应用程序测试与版本构建之间是否存在性能差异?
编辑:
我已经测试了发行版构建,而不是在我真正的设备上的调试构建。我看到了比调试版本更好的性能,所以这是很好的。现在的问题是:我不能检查perf监视器。有人知道一个很好的工具来检查发布版本的性能吗?
发布于 2020-06-09 20:13:18
问得好!
不知道对发布版本运行调试器的任何方法。也就是说-你可以在你的物理设备上运行一个调试程序。
您可以访问所有典型的调试细节-检查器、调试器、性能监视器。假设您的发行版构建将比Debug构建运行得更快。
https://stackoverflow.com/questions/62289927
复制相似问题