【问题标题】:React native performance simulator vs. real deviceReact 本机性能模拟器与真实设备
【发布时间】:2020-09-29 01:30:36
【问题描述】:

我对 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 加载本地图像。在模拟器上,它们几乎立即出现。在真实设备上,它们需要一些时间才能出现。例如,我有一个带有背景图像的屏幕。在模拟器上,它会立即显示出来。然而,在真实设备上,加载大约需要一秒钟。

我在我的应用程序中使用了很多动画。我正在使用 reanimated 在 UI 线程上运行动画。在模拟器中,它们都工作得非常顺利,但在真实设备上,它们似乎遇到了一些问题。它们不像在模拟器上那么流畅。

另一件事:在 textinput 中输入一些文本时(文本存储在 useState-variable 中,同时通过onChangeText={v => setValue(v)} 键入。在模拟器上丢帧约 6-8 帧,但在真实帧上再次下降约 18-20 帧设备。

我现在的问题是:造成这种性能差异的原因可能是什么?我想出了一些可能的答案,其中一个(或多个)正确吗?

原因 1:metro 服务器

我在真实设备上测试,所以反应原生代码仍在我的笔记本电脑上。该应用程序尚未在我的手机上运行,​​因此所有请求都通过将我的手机连接到我的笔记本电脑的电缆。这会导致一些滞后。

原因 2:旧设备

我的 iphone 7 旧了。我正在运行 ios 13.3,但 iphone 已经快 4 年了。但是,当我在 iphone 7 模拟器(ios 11.4)上进行测试时,一切正常。

我还注意到一些奇怪的事情:在模拟器中运行相同的应用程序消耗的 RAM 内存大约是真实设备上的两倍。在模拟器的性能监视器中,当我打开应用程序或执行某些操作时,使用的 RAM 内存比真实设备上的多(大约 30-40 mb,有时大约 70-80 mb,取决于模拟器类型和ios版本)。

我还没有使用发布版本对其进行测试,因为我的应用还远未完成。通过 Metro 服务器测试的应用与发布版本之间是否存在性能差异?

编辑:

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

【问题讨论】:

    标签: ios performance react-native


    【解决方案1】:

    好问题!

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

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

    您将可以访问所有典型的调试细节 - 检查器、调试器、性能监视​​器。假设您的发布版本比调试版本运行得更快。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多