反应本机性能模拟器与真实设备

时间:2020-06-09 18:55:59

标签: ios performance react-native

我对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服务器进行的应用程序测试与发布版本之间是否存在性能差异?

编辑:

我已经在我的真实设备上测试了发布版本而不是调试版本。与调试版本相比,我看到了更好的性能,所以很好。现在的问题是:我无法检查性能监视器。有人知道检查发布版本性能的好工具吗?

1 个答案:

答案 0 :(得分:0)

好问题!

不知道有任何针对Release版本运行调试器的方法。也就是说-您可以在物理设备上运行Debug版本。

  1. 将设备连接到Macbook
  2. 在XCode中打开ios / .xcworkspace
  3. 选择设备和产品->运行

您将可以访问所有典型的调试技巧-检查器,调试器,性能监视器。假设您的Release版本的运行速度比Debug版本的运行速度快。