无需 Xcode 或 Instruments,即可在本地测量您的应用性能。请在发布博文中阅读所有相关信息
ETTrace 包含两个组件:作为命令行工具的“runner”以及您的应用链接到的框架。
首先,使用 brew install emergetools/homebrew-tap/ettrace
安装 runner。然后使用以下方法之一安装框架
使用 URL https://github.com/EmergeTools/ETTrace
将此仓库添加为 Swift Package(在 Xcode 或您的 Package.swift 文件中)。选择 “ETTrace” 作为要添加到您应用的产品包。
警告
请务必按照以下屏幕截图所示,将 ETTrace 产品包添加到您的应用。
或者,运行 ./build.sh
来构建 xcframework ETTrace.xcframework
。将此 xcframework 链接到您的应用。
注意
链接框架到您的应用是唯一的安装步骤,您无需进行任何代码更改。
如果一切设置正确,当您启动应用时,控制台将打印 “Starting ETTrace”。
我们的用户喜爱 ETTrace,并认为它在他们的 iOS 开发过程中至关重要。以下是一些用户的评价:
Keith Smiley,Lyft 首席工程师:“使用 ETTrace,我可以精确定位应用中耗时的部分,并快速找到改进机会。它是我进行深入性能分析的首选工具。”
Bruno Rocha,Spotify 软件工程师:“ETTrace 是我最喜欢的 iOS 性能诊断工具,火焰图视图使我能够轻松找到瓶颈并加速应用启动。”
启动您的应用并运行 ettrace
或 ettrace --simulator
。分析完成后,结果将显示在 https://emergetools.com/flamegraph
注意:始终通过手动点击 iOS 主屏幕上的图标来启动应用,通过 Xcode 运行应用可能会导致结果不准确。
您可以使用 --dsyms
标志将 ettrace
指向包含 dsyms 的文件夹。如果 dsyms 已被 Spotlight 索引,它们将被自动找到并使用。
使用 --launch
标志在应用启动时开始记录。当您首次使用此标志连接到应用时,应用将强制退出。在下次启动时,它将自动开始分析并捕获您的所有 main
函数。在某些情况下,您需要记录安装后的首次启动。您不能为此使用 --launch
标志,因为它需要重新启动应用。相反,在您的 Info.plist 中添加一个布尔值,将其设置为 YES
,键为 ETTraceRunAtStartup
。然后您可以正常运行 ettrace
,无需 --launch
标志,仍然可以在应用启动时开始分析。
ETTrace 产生一个新的线程,定期捕获主线程的堆栈跟踪。这是一种基于采样的性能分析方法。采样线程在 ettrace.framework 加载时(+load 方法)或 CLI 向应用程序发送消息时启动。这些控制消息和采样数据使用 PeerTalk 进行通信。
ETTrace 从 v1.0 版本开始支持在火焰图中显示事件。您可以使用它们来跟踪代码中的用户流程,您可以通过在代码中发布通知轻松添加它们
NotificationCenter.default.post(name: Notification.Name(rawValue: "EmergeMetricStarted" | "EmergeMetricEnded"),
object: nil,
userInfo: [
"metric": "EVENT_NAME"
])
使用 EmergeMetricStarted
注册流程的开始,使用 EmergeMetricEnded
跟踪流程的结束。
例如,我们将发布此通知来跟踪用户登录流程的开始。
NotificationCenter.default.post(name: Notification.Name(rawValue: "EmergeMetricStarted"),
object: nil,
userInfo: [
"metric": "USER_LOGIN"
])
然后在用户成功登录时发布此通知
NotificationCenter.default.post(name: Notification.Name(rawValue: "EmergeMetricEnded"),
object: nil,
userInfo: [
"metric": "USER_LOGIN"
])
使用 --multi-thread
(-m
) 标志记录所有线程。这将为每个记录的线程提供一个 output.json 文件,您可以将其拖入 ETTrace。