国内最专业的IT技术学习网

UI设计

当前位置:主页 > UI设计 >

360移动端性能监控实践QDAS-APM(iOS篇)

发布时间:2019/07/02标签:   时长    点击量:

原标题:360移动端性能监控实践QDAS-APM(iOS篇)
1、配景app的机能成绩是影响用户休会的主要要素之一。机能成绩重要包括:瓦解、收集恳求过错或许超时、UI呼应速率慢、主线程卡顿、CPU和内存应用高、耗电量大等等。大多成绩的起因在于开辟者过错地应用了线程、锁、体系函数、编程标准成绩、数据构造等等。处理这个成绩的要害在于尽早发觉和定位成绩。360作为一家重视用户休会的公司,app的机能成绩无疑是被重点存眷的,咱们也总结出了一套本人的app机能监控系统。在平常开辟和用户反应的成绩中,咱们对机能成绩停止了演绎,总结出了5个分辨是:资本文件怎样掌控、 版实质量怎样保障、线上成绩怎样排查、开辟阶段怎样避免机能衰减、机能监控能否能实在反应用户休会。同时进修了业内绝对完美的机能监控平台上的功效道理。从而得出了360在iOS端挪动端线上机能监控计划——QDAS-APM。2、功效和道理QDAS-APM曾经完成以下功效监控: 页面衬着时长 主线程卡顿 收集过错 FPS 大文件存储 CPU 内存应用 Crash 启动时长上面依照功效具体先容完成细节和道理。别的用户在应用app时会感知机能成绩,咱们能够将其转化为详细的机能监控目标。1. 页面衬着时长甚么是页面衬着时长?页面衬着时长实在是从页面初始化到用户能看到页面后果的时光长度。所要懂得的目标有: 性命周期体系方式履行时长 页面类名 启动范例 履行耗时 插件称号要害器量的目标是履行耗时,差别的方式和步调发生的耗时在用户能接收的范畴内才被以为是公道。其余目标则是起无关联性感化和定位成绩。间接hook UIViewController的方式显明是弗成行的,起因是它只感化在UIViewController的方式,而app中大局部都采纳继续UIViewController的方法。这里列出两个可行性计划: 采纳KVO,咱们晓得关于恣意工具停止KVO操纵时,体系都市帮你静态的创立一个复制类,同时完成了setter getter函数的笼罩和函数完成。 采纳runtime遍历全部类为UIViewController的子类,再停止静态调换。这两种方法愈加推举第一种,出于对兼容性、机能、以及可能间接猎取UIViewController的子类的IMP。那详细怎样完成呢?总结演绎为三步调: 须要创立一个UIViewController的种别,对UIViewController的实例停止KVO,目标是让KVO创立须要监控UIViewController的子类。 增加须要监控的方式,在KVO创立进去的子类增加须要Swizzle的方式对应的SEL及其IMP。目标是操纵挪用本来类的方式机会。 在UIViewController的实例烧毁时,在dealloc方式里将KVO监听移除,否则会招致Crash。举个例子:咱们以监控到qh_viewDidLoad方式举例:staticvoidqh_viewDidLoad(UIViewController*kvo_self,SEL_sel){Classkvo_cls=object_getClass(kvo_self);Classorigin_cls=class_getSuperclass(kvo_cls);//留神点IMPorigin_imp=method_getImplementation(class_getInstanceMethod(origin_cls,_sel));void(*func)(UIViewController*,SEL)=(void(*)(UIViewController*,SEL))origin_imp;CFAbsoluteTimestartTime=CACurrentMediaTime();func(kvo_self,_sel);CFAbsoluteTimeendTime=CACurrentMediaTime();NSTimeIntervalduration=(endTime-startTime)*1000;NSLog(@"Class%@cost%ginviewDidLoad",[kvo_selfclass],duration);}

上一篇:企业如何将工作负载转移到云端?

下一篇:没有了

返回
版权信息Copyright © IT技术教程 版权所有    ICP备案编号:鲁ICP备09013610号