同程APP启动过程时长统计及优化方案:
APP启动到首页加载完:1.64s - 1.74s
一、AppDelegate各阶段时长统计
表1:
启动过程 | 耗时 | 优化方案 | 备注 |
---|---|---|---|
replaceLaunchImage | 80-105ms之间 | 延后执行 | 启动只执行一次 |
bugly初始化 | 5-8ms左右 | 可忽略 | |
beeHive初始化 | 2-3ms左右 | 可忽略 | |
通用模块初始化 | 140- 180ms之间 | 具体参考表2 | |
APP首页创建 | 343 - 400ms之间 | @张友凯 @陈冬 | |
微信初始化 | 3 - 28ms | 延后执行 |
表2:
过程 | 耗时 | 优化方案 | 备注 |
---|---|---|---|
设置最优域名&gateway | 34ms左右 | 延后操作 | @郭东洋 |
trace配置 | 12-15ms | 延后操作 | @郭东洋 |
hybrid环境配置 | 40-70ms | 延后操作 | @朱尧才 确认 @郭东洋 修改 |
注册音频后台服务 | 5ms | 延后操作 | @郭东洋 |
读取广告符 | 5ms | 延后操作 | @郭东洋 |
页面加载耗时监听 | 11ms | 延后操作 | @朱尧才 @郭东洋 |
动态化库初始化 | 30-40ms | 是否可以异步线程执行 | @陈冬确认 |
动态更新配置DUCOnfig | 8 - 10ms左右 | 暂不处理 | 热修复逻辑需要靠前 |
其他 | 都小于3ms | 可忽略 |
二、首页加载时长统计
1、IndexContainerViewController
过程 | 耗时 | 优化方案 | 备注 |
---|---|---|---|
viewDidLoad(needFirstLoad) | 193ms左右 | @张友凯 @陈冬 | |
viewWillAppear | 小于1ms | 忽略 | |
viewDidAppear | 小于1ms | 忽略 |
2、IndexMainViewController
过程 | 耗时 | 优化方案 | 备注 |
---|---|---|---|
loadView | 80 - 100 ms | @张友凯 @陈冬 | |
loadDefaultData | 60 - 80 ms | @张友凯 @陈冬 | |
createBaseView | 14ms左右 | @张友凯 @陈冬 | |
viewDidLoad | 80 - 85ms | @张友凯 @陈冬 | |
viewWillAppear | 13ms左右 | @张友凯 @陈冬 | |
viewDidAppear | 不到1ms | 忽略 |
Load方法耗时统计
主工程
类/分类 | 优化方案 | 备注 |
---|---|---|
TCTCacheManager+TCTDeviceIdCompatible | 可以删除@郭东洋 | 已和@方爱林确认 |
TCTFileStorageObject | 可以删除@郭东洋 | 已和@方爱林确认 |
TCTLoadManage | 放到initialize处理 | @郭东洋 |
TCTWidgetBridgeOC | 修改调用方式 | @方爱林 确认 |
TCTURLNotificationHandler | 修改初始化注册方式 | @郭东洋 修改 |
TCTURLRouteSupport | 首页加载完成后初始化 | @郭东洋 修改 |
TCTRequestAlertCustomView | 首页加载完成后初始化 | @郭东洋 修改 |
UIViewController(TCTTrendUseURL) | 可以删除 | 未做任何处理 @方爱林 @郭东洋确认 |
TCTTrendImageDownloadRelyObject | 暂不处理 | 影响较大 @方爱林 |
TCTRequestObject(TCTNetGateway) | 暂不处理 | 影响较大,处理网关 |
UIViewController(PO_RouteURL) | 暂不处理 | 兼容路由表注册,不能删除 |
私有组件
组件 | 类/分类 | 优化方案 | 备注 |
---|---|---|---|
TCTMixtureProject | TCTImagePickerManager+TCTTopShadow | 放到initialize处理 | @方爱林 |
TCTQRHistory | TCTQRScanViewController+QRHistory | 放到initialize处理 | @方爱林 |
TCTViewLoadTimeDetect | UIViewController+LoadTimeDetect | 去掉组件 | kTCTViewLoadDetectNotification暂无处理 @朱尧才 |
WelcomeViewController | WelcomeViewController | 放到initialize处理 | 业务逻辑 @Tracy-jun |
TCTMore | SettingViewController+CacheClear | 放到initialize处理 | @方爱林 |
eLongFramework | NSDate+Helper | 暂不处理 | 影响较大 |
eLongFramework | NSDate+DateTools | 暂不处理 | 影响较大 |
TCTAnalyics | UIViewController+TCTUMSAgent | 暂不处理 | 页面数据埋点 |
TCTBehaviorTrackCore | TCTUMSAgent+BehaviorTrack | 暂不处理 | hybrid监控 |
TCTBehaviorTrackCore | TCTBehaviorTrackHybridBridge | 暂不处理 | hybrid监控 |
TCTCategory | UITableView+FDIndexPathHeightCache | 暂不处理 | 影响较大 |
TCTCategory | UIViewController+TCTExtendedLayout | 暂不处理 | 影响较大 @方爱林 |
TCTHTTPDNS | SDWebImageConvertHTTPS | 暂不处理 | 支持https @方爱林 |
TCTMore | UNUserNotificationCenter+TCTHack | 暂不处理 | 修复crash |
TCTNavHookPop | UINavigationController+HookPop | 暂不处理 | 影响较大 |
TCTNavigationBar | UINavigationBar+TCTTransparent | 暂不处理 | 影响较大 |
TCTNavigationBar | UIViewController+TCTNavigationBarTransparent | 暂不处理 | 影响较大 |
TCTravelUICategory | UINavigationItem+_Swizzle | 暂不处理 | 修改导航条按钮颜色影响较大 |
TCTrend | UIViewController+ClientCostTimeLog | 暂不处理 | 统计页面耗时 |
TCTUIDeviceIdentifier | UIDeviceHardware+swizzle | 暂不处理 | 影响较大 |
TCTURLRoute | NSURL+URLWithStringEncode | 暂不处理 | 影响较大 |
TCTURLRoute3 | UIViewController+TCTBridgeWeb | 暂不处理 | 影响较大 |
第三方
暂不处理
组件 | 类/分类 |
---|---|
AnimatedGIFImageSerialization | AnimatedGIFImageSerialization |
BSBacktraceLogger | BSBacktraceLogger |
React | RCTBridgeModule |
TTTAttributedLabel | TTTAttributedLabel |
UITextView+Placeholder | UITextView+Placeholder |