当前位置: 首页 > 后端技术 > Java

使用友盟U-APM分析启动时间

时间:2023-04-02 00:26:15 Java

本文就关于启动时间的问题进行简单的分析,只是帮助大家了解哪些东西可能与启动性能有关。文章内容比较介绍。同时也了解了友盟+u-apm这个性能测试工具可以帮助开发者做什么!  1.APP启动方式  “热启动”,  冷启动:在App被点击启动之前,此时App的进程不在系统中。  要求系统创建一个新的进程并赋值给App。(这是一个完整的app启动流程)  热启动:app冷启动后,用户将app返回后台,此时app的进程还在系统中。  用户返回App的过程。(热启动省力)  2.App启动流程  解析Info.plist  加载启动画面等相关信息  沙箱建立,权限检查  Mach-OLoad  如果是胖二进制文件,找到适合当前CPU类别的部分  加载所有依赖的Mach-O文件(递归调用Mach-O加载方法)  定位内部和外部指针引用,比如作为字符String、函数等  执行声明为__attribute__((constructor))的C函数  加载类扩展(Category)中的方法  C++静态对象加载,调用+load函数ObjC  程序执行  调用main()调用UIApplicationMain()调用applicationWillFinishLaunching  3、如何衡量启动过程的耗时当用户按下home键时,iOSApp不会立即被杀死,而是会继续存活一定时间。理想情况下,当用户点击App图标再次返回时,App可以恢复到退出前的状态继续为用户服务,几乎不需要做任何事情。在这种持续生存的情况下启动应用程序称为热启动。相对来说,冷启动就是应用被杀死后一切从头开始的过程。那么这里推荐Umeng+U-APM,实测启动过程耗时。友盟+U-APM启动耗时分析:提供详细的启动趋势分析、启动慢、启动死机数据。启动趋势分析,可以展示当前筛选维度和时间状态下的启动次数、平均耗时、分位数;慢启动分析直观展示了慢启动分布的设备、系统、运营商、版本、渠道、区域等一系列详细而强大的信息统计;启动死机分析,可汇总启动阶段死机信息,支持首次启动、冷启动、热启动状态死机率筛选,实时反馈故障发生情况崩溃信息帮助开发人员减少修复时间。  友盟+云真机搭载在U-APM应用性能监控平台上,为开发者提供灵活的测试操作界面,支持ADB调试、WEB远程调试、扫码、抓包、虚拟定位等测试功能,并提供测试报告供开发者日后查阅。帮助开发者更好地平衡成本和需求。  4。影响启动性能的因素  App启动过程中的每一步都会影响启动性能,但有些部分消耗的时间很少,有些部分根本就无法避免。考虑到投入产出比,我们只列出我们可以优化的部分:  1。main()函数前的耗时因素  2。加载的动态库越多,启动越慢。  3。ObjC类越多,启动越慢  4。C构造函数越多,启动越慢  5。C++静态对象越多,启动越慢  6。ObjC+负载越多,启动越慢  5.一些优化方向  1。使用DYLD_PRINT_STATISTICS分析main()函数之前的耗时  2。重组架构,减少动态库和ObjC类的数量,减少类别的数量  3。定期扫描不再使用的动态库、类和函数,例如每两次迭代  4。将所有的attribute((constructor))函数和C++静态对象替换为dispatch_once()初始化,ObjC的+load  5.将图片的尺寸压缩在设计者可以接受的范围内,会有意想不到的收获  6.利用锚点分析applicationWillFinishLaunching的耗时  7.在applicationWillFinishLaunching中延迟执行不需要立即执行的代码  8。加载rootViewController,适当延迟加载childViewController或某级子view  9.如果你的App可能会被后台拉起冷启动,可以考虑不加载rootViewController  10。异步操作不影响指标,但可能会影响交互体验,比如大量的网络请求导致数据拥塞  一般情况下,启动速度变慢的原因有很多。定位问题,借用友盟+u-apm更方便快捷。如果一味地解决性能问题,可能反而会影响到其他进程。得不偿失!