1. 使用xctest measure
xctest 支持编写性能测试来收集一段代码执行所用的时间、执行期间所用的内存或所写的数据这些方面的信息。
XCTest 会多次运行你的代码来测量请求的指标。
你可以为指标设置一个基准预期,如果测得的值比基准值差太多,XCTest 会报告测试失败。
具体代码:
import XCTest
final class PerformanceTests: XCTestCase {
override func setUpWithError() throws {
continueAfterFailure = false
}
override func tearDownWithError() throws {
XCUIApplication(bundleIdentifier: "io.dcloud.uniappx").terminate()
}
func testLaunchPerformance() throws {
if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) {
measure(metrics: [XCTApplicationLaunchMetric(), XCTMemoryMetric()]) {
XCUIApplication(bundleIdentifier: "io.dcloud.uniappx").launch()
}
}
}
}
请注意:下图,标红部分,这里传入了bundleID,用于启动特定的应用。
Xcode控制台输出的测试日志:
当然,选择测试用例,右键菜单【Jump to Report】也可以看到测试报告。
2. 使用Xcode Instruments工具
Instrument是 苹果官方IDE Xcode 自带的 调试工具。
访问入口:Xcode 顶部菜单 【Xcode】->【Open Developer tool】->【lnstruments】。
如下图所示,我们研究启动时间,主要用到两个。
- App Launch:用于查看App的启动过程,从而可以针对性的对启动速度进行优化
- Time Profiler:时间分析器,对运行在系统cpu上的进程执行基于低开销时间的采样
3. Xcode 配置DYLD环境变量
注意:DYLD_PRINT_STATISTICS 仅适用于iOS 15以下。iOS以上不起作用。
DYLD 是动态链接器,可在执行应用程序时加载和链接应用程序的共享库。
- DYLD_PRINT_STATISTICS:录有关应用程序启动过程的统计信息,例如,应用程序启动完成后加载了多少镜像
- DYLD_PRINT_STATISTICS_DETAILS:记录动态加载程序何时调用构造函数程序和析构函数
实际效果: