同程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 |