我可以使用 XCTest 测试应用程序中某一部分的性能吗?
Can I test performance of one section in my application with XCTest?
因为我对 UNIT testing
和 Xcode XCTest
目标有点了解,所以我想知道在我的项目中,有一个部分包含许多 animations
那里有许多服务和 database
流程,那么如何衡量 XCTest
中该屏幕的性能?
XCTestCase
中有衡量性能的方法:measure and measureMetrics。
这些方法执行块内的代码十次并报告单独执行时间、平均时间和偏差。他们还为每个测试设备设置了一个基线,如果您的代码的测量部分在未来变得明显变慢,则报告测试失败。
单元测试用例文件的Xcode模板底部有一个性能测试方法示例:
class CoreDataTestTests: XCTestCase {
func testPerformanceExample() {
self.measure {
// Put the code you want to measure the time of here.
}
}
}
这取决于你想对结果做什么。
如果您想通过某种基准测试来测试您的函数的性能,以查看在对该代码进行更改后速度是变慢还是变快,请查看 nils
建议的内容。
如果您想知道什么占用了处理时间,那么您最好使用 Instruments
获得准确的测量结果。您可以使用 Profile
或 command+i
.
从 Product
菜单中 运行 乐器
在设备上选择 time profiler
和 运行 进程(使用红色圆圈按钮)。请注意,启用一些设置有助于更清楚地查看数据。
像用户一样使用您的应用程序并实时观察调用树,因为它显示哪些函数占用的处理器时间最多。
从这里您可以看到可能需要优化的内容等。
注意:您可能需要在构建设置中启用 dSYM,以便在跟踪中获取符号而不是随机内存偏移量。
Instruments 是了解您的应用中正在发生的事情的好工具。您可以查看CPU核心使用情况、线程使用情况和线程等待情况等
因为我对 UNIT testing
和 Xcode XCTest
目标有点了解,所以我想知道在我的项目中,有一个部分包含许多 animations
那里有许多服务和 database
流程,那么如何衡量 XCTest
中该屏幕的性能?
XCTestCase
中有衡量性能的方法:measure and measureMetrics。
这些方法执行块内的代码十次并报告单独执行时间、平均时间和偏差。他们还为每个测试设备设置了一个基线,如果您的代码的测量部分在未来变得明显变慢,则报告测试失败。
单元测试用例文件的Xcode模板底部有一个性能测试方法示例:
class CoreDataTestTests: XCTestCase {
func testPerformanceExample() {
self.measure {
// Put the code you want to measure the time of here.
}
}
}
这取决于你想对结果做什么。
如果您想通过某种基准测试来测试您的函数的性能,以查看在对该代码进行更改后速度是变慢还是变快,请查看 nils
建议的内容。
如果您想知道什么占用了处理时间,那么您最好使用 Instruments
获得准确的测量结果。您可以使用 Profile
或 command+i
.
Product
菜单中 运行 乐器
在设备上选择 time profiler
和 运行 进程(使用红色圆圈按钮)。请注意,启用一些设置有助于更清楚地查看数据。
像用户一样使用您的应用程序并实时观察调用树,因为它显示哪些函数占用的处理器时间最多。
从这里您可以看到可能需要优化的内容等。
注意:您可能需要在构建设置中启用 dSYM,以便在跟踪中获取符号而不是随机内存偏移量。
Instruments 是了解您的应用中正在发生的事情的好工具。您可以查看CPU核心使用情况、线程使用情况和线程等待情况等