我对React Native应用的性能有疑问。
我正在开发React Native应用(RN 0.62.2)。我正在各种IOS模拟器以及真实设备(iPhone 7,iOS 13.3)上进行测试。
我主要使用模拟器,因为这是检查代码输出的最快方法,但是当我在iPhone 7上进行测试时,我看到了一些性能问题。
首先:我正在使用反应导航。当我在模拟器上打开性能监视器并且导航到新屏幕时(在同一堆栈导航器中),JS线程下降了大约6-8帧(从60到52-54)。在具有18-20帧(从60到40-42)的真实设备上。我导航到完全相同的屏幕。
第二,我通过require加载本地图像。在模拟器上,它们几乎立即出现。在实际设备上,它们需要一些时间才能显示出来。例如,我有一个带有背景图像的屏幕。在模拟器上,它会立即显示。但是,在实际设备上,加载大约需要一秒钟。
我在应用中使用了很多动画。我正在使用动画来在UI线程上运行动画。在模拟器中,它们都非常流畅地工作,但是在实际设备上,似乎存在一些问题。它们不像模拟器那样平滑。
另一件事:在textinput中输入一些文本时(通过onChangeText={v => setValue(v)}
键入时,文本存储在useState变量中。在模拟器上帧下降约6-8帧,但在模拟器上下降约18-20帧真正的设备。
我现在的问题是:性能差异的原因可能是什么?我想出了一些可能的答案,一个(或多个)正确吗?
原因1:城域服务器
我正在真实设备上进行测试,因此React本机代码仍在笔记本电脑上。该应用程序尚未在我的手机上运行,因此所有请求都通过将手机连接到笔记本电脑的电缆进行。这会导致一些滞后。
原因2:旧设备
我的iPhone 7旧了。我正在运行ios 13.3,但iphone已快4岁了。但是,当我在iphone 7模拟器(ios 11.4)上进行测试时,一切都能顺利进行。
我还注意到了一些奇怪的事情:在模拟器中运行相同的应用程序消耗的RAM内存大约是真实设备的两倍。在模拟器上的性能监视器中,当我打开应用程序或执行某些操作时,使用的RAM内存比实际设备上的要多(大约30-40 mb,有时大约70-80 mb,这取决于模拟器的类型)和ios版本)。
我尚未使用发布版本对其进行测试,因为我的应用还远远没有完成。通过Metro服务器进行的应用程序测试与发布版本之间是否存在性能差异?
编辑:
我已经在我的真实设备上测试了发布版本而不是调试版本。与调试版本相比,我看到了更好的性能,所以很好。现在的问题是:我无法检查性能监视器。有人知道检查发布版本性能的好工具吗?
答案 0 :(得分:0)
好问题!
不知道有任何针对Release版本运行调试器的方法。也就是说-您可以在物理设备上运行Debug版本。
您将可以访问所有典型的调试技巧-检查器,调试器,性能监视器。假设您的Release版本的运行速度比Debug版本的运行速度快。