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


19

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

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

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

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

仪器调用栈


如果您使用的是expo,则可以直接在chrome中运行该应用,然后在其中进行调试。
Mykybo

不,我们使用了大量的本机组件,因此,Expo是不可行的。
Craig Otis

Answers:


1

Firefox探查器

了解Firefox Profiler

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

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

“报告性能问题”具有分步指南,可在Firefox开发人员要求时获取配置文件。

1.时间轴

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

提示:带有“ [default]”注释的线程在父进程(aka“ UI”,aka“ browser chrome”,aka“ main”)进程中,而带有“ [tab]”注释的线程在Web内容中(aka “子”进程。

在此处输入图片说明

提示:父流程中的长期任务将阻止所有输入或使用浏览器UI(又称“ UI jank”)绘制,而内容流程中的长期任务将阻止与页面的交互,但仍允许用户平移和平移借助APZ进行放大。

追踪标记

Red:这些表明事件循环没有响应。请注意,此处不包括诸如vsync之类的高优先级事件。另请注意,这表明如果有事件等待,将会发生什么事情,而不一定是有这么长时间的事件待决。

Black:这些指示同步IPC呼叫。

2.呼叫树

在此处输入图片说明

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

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

3.共享配置文件 单击“共享...”>“共享”,确认您已打开的URL和Firefox扩展将包含在发送到服务器的配置文件数据中。如果选择其他时间范围,则按“固定链接”显示的URL将会更改,以便您可以确定URL的收件人将看到与您看到的相同的东西。


Firefox探查器的行为与Safari或Chrome探查器的行为不同吗?以我的经验,他们描述了远程调试选项卡/页面本身,而不是正在运行的React Native应用程序。
Craig Otis
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.