iOS:Xcode Instruments的使用
·
返回上级目录:iOS 性能优化(一):Improving Your App‘s Performance
文章目录
1.使用实例
1.1 Points of Inerest(标记代码执行的点和执行时间)
import MetricKit
class ViewController: UIViewController {
static let startupActivities:StaticString = "viewDidLoad"
let poiLog = OSLog(subsystem: "com.example.CocoaPictures", category: .pointsOfInterest)
override func viewDidLoad() {
super.viewDidLoad()
os_signpost(.begin, log: self.poiLog, name: ViewController.startupActivities)
for i in 0...100 {
print(i)
}
os_signpost(.end, log: self.poiLog, name: ViewController.startupActivities)

代码出处:
Apple Developer: Reducing Your App’s Launch Time
1.1.1 oc版,+load方法
override class func load()在swift中不被允许

instruments测试截图:+load方法的执行在启动的Initializing - Static Runtime Initialization阶段

代码:用swift代码通过桥接文件来实现
import UIKit
import MetricKit
class XXYMetric: NSObject {
static var startupActivities:StaticString = "didFinishLaunching"
static var poiLog = OSLog(subsystem: "com.example.CocoaPictures", category: .pointsOfInterest)
@objc class func start(str: String) {
poiLog = OSLog(subsystem: str, category: .pointsOfInterest)
os_signpost(.begin, log: poiLog, name: startupActivities)
}
@objc class func end(str: String) {
poiLog = OSLog(subsystem: str, category: .pointsOfInterest)
os_signpost(.end, log: poiLog, name: startupActivities)
}
}
#import "XXYPerson.h"
#import "XCTEST_oc-Swift.h"
@implementation XXYPerson
+ (void)load {
[XXYMetric startWithStr:@"load"];
for (int i = 0; i < 1000; i++) {
NSLog(@"%d",i);
}
[XXYMetric endWithStr:@"load"];
}
@end
1.1.2 我2022.3.1日打印出来感觉很不对,如下图
- viewDidLoad方法怎么会和viewWillAppear方法同时执行?
- 打印十个数字怎么要4.8s?


2.苹果官网资料
WWDC视频:
WWDC2019:Developing a Great Profiling Experience
WWDC2019:Modeling in Custom Instruments
WWDC2019: Getting Started with Instruments

苹果官方文档:
Apple Developer: Instruments Help
参考博客:
Xcode Instruments的使用
iOS -调试工具Instruments使用总结
3.实际操作
3.1 时间段左右上下放大缩小
Ctrl + Ctrl - 是上下的变大变小

更多推荐



所有评论(0)