在2018年9月,苹果推出了os_signpost,它可以配合Instruments,显示可视化的效果,WWDC视频Measuring Performance Using Logging有介绍
环境版本
Xcode Version: 13
Mac OS Version 12.0.1
支持版本
Xcode Version: 10+
iOS 12+
1. 书写开始结束代码
/// 导入头文件
#import <os/signpost.h>
/// Time Pofier 标记时间
+ (os_log_t)creatWithBundleId:(const char *)bundleId key:(const char *)key {
return os_log_create(bundleId, key);
}
/// 开始
+ (void)beginTime:(os_log_t)logger {
if (@available(iOS 12.0, *)) {
os_signpost_id_t signPostId = os_signpost_id_make_with_pointer(logger,sin);
//标记时间段开始
os_signpost_interval_begin(logger, signPostId, "Launch","%{public}s","");
//标记结束
os_signpost_interval_end(logger, signPostId, "Launch");
}
}
/// 结束
- (void)endTime:(os_log_t)logger {
if (@available(iOS 12.0, *)) {
os_signpost_id_t signPostId = os_signpost_id_make_with_pointer(logger,sin);
os_signpost_interval_end(logger, signPostId, "Launch");
}
}
2. 书写需要统计耗时的方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
os_log_t log = [LGClangTools creatWithBundleId:"com.ruisha.com" key:"didFinishLaunch"];
[LGClangTools beginTime:log];
...
代码
...
[LGClangTools endTime:log];
return YES;
}
3. 添加os_signpost
打开Instruments选择TimeProfile