如何使用Xcode / Instruments / Time Profiler来分析React Native源代码

Cra*_*tis 18 javascript xcode instruments ios react-native

我们正在使用React Native 0.59.10和React-Redux 5.0.7,并且遇到了CPU限制的性能问题,其中我们的Redux操作需要大约0.25秒才能完成。

我们已经使用Instruments中的“时间剖析器”配置进行了剖析,但是我们的JS代码都没有符号化。

在Chrome中进行远程调试似乎只是调试“远程检查器”页面,这完全无济于事。

有没有一种方法可以将源映射建立或附加到JS函数名称/调用,或用符号表示下面看到的内存地址?

仪器调用栈

Vig*_*r A 1

火狐分析器

了解 Firefox 分析器

Firefox Profiler 在 profiler.firefox.com/docs/ 上提供了更多最新文档。然而,以下内容可能包含一些针对 Gecko 特定问题的潜在有用信息。

您可以查看有关 Firefox Profilers 的一些常见问题。

报告性能问题有一个分步指南,用于根据 Firefox 开发人员的要求获取配置文件。

1. 时间轴

时间线有几行跟踪标记(彩色片段),指示有趣的事件。将鼠标悬停在它们上方可查看更多信息。跟踪标记下方是与各种线程上的活动相对应的行。

提示:标有“[default]”的线程位于父进程(又名“UI”、“浏览器 chrome”、又名“main”)进程中,标有“[tab]”的线程位于 Web 内容(又名“UI”、“浏览器 chrome”、“主”)进程中。 “子”)进程。

在此输入图像描述

提示:父进程中长时间运行的任务将阻止浏览器 UI 的所有输入或绘图(也称为“UI 卡顿”),而内容进程中长时间运行的任务将阻止与页面的交互,但仍允许用户平移和绘制借助 APZ 进行缩放。

追踪标记

Red:这些表明事件循环没有响应。请注意,此处不包括垂直同步等高优先级事件。另请注意,这表明如果有一个事件正在等待,将会发生什么,而不一定是有一个事件等待那么长时间。

Black:这些表示同步 IPC 调用。

2. 调用树

在此输入图像描述

调用树显示按“运行时间”组织的示例,它将按挂钟时间显示数据。树元素右侧有浅灰色名称,指示代码的来源。请注意,元素可以来自 JavaScript、Gecko 或系统库。请注意,如果某些函数尚未正确命名,则符号化可能尚未完成。

提示:您可以右键单击函数名称以获取将其名称复制到剪贴板的选项。

3. 共享配置文件 单击“共享...”> 共享,确认您打开的 URL 和您的 Firefox 扩展将包含在发送到服务器的配置文件数据中。如果您选择不同的时间范围,按“永久链接”显示的 URL 将发生变化,以便您可以确保 URL 的接收者将看到与您所看到的相同的内容。

  • 您是否正在使用此示例运行反应本机应用程序?这似乎只是 Firefox 探查器,但问题是“如何在 IO 中的真实设备(不是模拟器)上的反应本机中使用调试模式时使用探查器”。 (3认同)