在参与《首席专家讲鸿蒙》课程学习之前,HarmonyOS性能优化开发于我而言,犹如一座神秘且充满挑战的技术高峰,虽心向往之,却难以窥其全貌。而当我有幸成为参与该课程学习的开发者,跟随华为首席架构师团队的指引,开启这场深度探索之旅后,才真正踏入了这座技术殿堂的大门。

课程围绕分布式架构优化、声明式UI性能调优、多端协同内存管理等核心技术展开,以架构设计者的独特视角,为我们层层揭开鸿蒙底层原理的神秘面纱。同时,通过一个个真实项目案例的剖析,让我深刻认识到性能瓶颈的突破对于应用发展的关键意义。在学习过程中,从明确HarmonyOS高性能体验标准,到掌握应用启动、页面打开、内容加载等各环节的优化策略,再到学习CPU和内存优化的具体方法,每一步都让我对高性能开发有了全新的认知。以下,我将从课程核心内容、技术价值以及个人成长感受这几个方面,分享这段宝贵的学习经历。

课程直达链接:

https://developer.huawei.com/consumer/cn/training/course/slightMooc/C301753877935020566?pathId=101667550095504391

讲性能体验,首先我们滴明确性能体验的标准。

HarmonyOS所倡导的高性能体验标准,是一种追求“手眼心”完美融合的流畅境界。它不仅要求操作精准且高效可控,确保用户的每一个指令都能得到迅速而准确的响应;更强调信息的传递需及时、可达且舒适顺滑,让用户在视觉与听觉的享受中无缝衔接操作流程。同时,反馈机制必须自然、一致且符合用户预期,营造出一种浑然天成的交互体验。从触觉的瞬时响应到视觉的无缝流畅,再到听觉的精准同步,HarmonyOS以人的感知为出发点,全方位定义高性能评价指标,旨在为用户带来前所未有的流畅与愉悦。

性能体验建议标准实例一:点击类

点击类包含两个方面:响应时延和完成时延,响应时延指的是用户手点击屏幕之后给到的反馈时间,官方推荐指标是100毫秒;完成时延指的是用户打开应用到应用完全打开的时间,官方推荐指标是1100毫秒。

性能体验建议标准实例二:滑动类

滑动类包括两种形式,抛滑和拖滑,抛滑速度较快允许的响应时延是80毫秒,拖滑速度较慢允许的响应时延是60毫秒;不管是哪种形式的滑动都不允许出现丢帧的现象,否则就会出现闪屏现象,给用户卡顿的感觉。

性能体验建议标准实例三:音视频类

音视频类中视频起播时延指的是用户等待视频开始播放时间,对体验影响表现为视频类应用播放起博快。官方推荐指标是上下滑动进行播放延时在230毫秒内,左右翻页转场播放是800毫秒内。应用在线流媒体播放过程中如果单帧停滞时间超过100毫秒,用户就会有明显的感觉视频卡顿;视频播放过程中音频和视频的同步也很重要,需要保证视频和音频之间的时延在-80毫秒-25毫秒之间。

如何优化应用性能

既然我们已经清晰了解了HarmonyOS所倡导的高性能体验标准,明确了应用在触觉、视觉、听觉等多维度应达到的流畅与精准要求,那么接下来,自然就要深入探讨如何将这些标准转化为实际行动,即如何采取有效措施来优化应用性能,使之真正符合“手眼心”合一的高标准,为用户带来极致流畅的体验。

应用启动(应用启动是用户使用应用的第一体验)

在HarmonyOS应用开发中,应用启动性能的优化是提升用户体验的关键一环。应用启动流程涵盖从应用进程创建与初始化,到最终网络数据加载与呈现的多个阶段。为了精准把握各环节的耗时情况,DevEco Studio的启动分析工具Launch Profiler发挥了重要作用,它能可视化呈现启动耗时,帮助开发者迅速定位瓶颈。基于分析结果,我们可采取一系列加速方案:建议使用Cached进程缓存,可显著降低15%-30%的启动时间;应用so并行加载与UI组件并行创建,能分别减少2-10%和5%以上的耗时;Lazy Import延迟加载策略可优化10-15%的启动速度;而C/C++代码毕昇编译加速也能带来5%以上的性能提升。这些优化措施协同作用,能让应用启动如行云流水,为用户带来瞬时响应的卓越体验。

进程缓存策略“Suggest Cached”是一项极具价值的技术。它主要适用于Stage模型应用,特别是在用户于多任务列表中清理应用或侧滑退出应用等场景下发挥重要作用。其机制原理在于,当应用声明支持进程缓存机制后,若系统整体状态相对健康,便不会彻底清理应用主进程,而是仅回调应用UIAbility的onDestory回调函数来回收相关资源,并使主进程保留在“空进程缓存”状态,以此提升下一次启动速度。从流程对比来看,原始流程会直接销毁进程,而优化流程则改为销毁UIAbility,主进程得以缓存,包括Main Process中的UIAbilities、FormExtensionAbility Process等应用进程模型相关内容都被保留缓存状态。这种优化方式巧妙地利用系统资源管理,减少了重复初始化的开销,显著提升了应用再次启动的响应速度,为用户带来更加流畅高效的应用使用体验。

在HarmonyOS应用开发中,随着应用功能不断拓展,冷启动时依赖的模块文件日益增多,加载时间也随之变长,此时延迟加载机制“Lazy-Import”便成为优化应用启动性能的得力助手。该机制的核心在于,冷启动阶段不加载应用当前未使用的文件,仅在后续相关导出变量被真正调用时,才同步加载执行。其语法简洁明了,如import lazy { x } from "mod"; 或import lazy { x as v } from "mod"; 。与动态加载相比,Lazy-Import有着独特优势,它无需像动态加载那样在被使用阶段解析模块和执行源码,且使用时无需创建异步任务开销,加载时序为同步,运行时也不可拼接模块名,能更高效地管理资源加载。

应用so并行加载主要适用于应用在启动阶段需加载自带so库的场景。其机制是将原本可能在主线程或单一流程中顺序执行的so加载操作,提前安排在子线程中进行,使应用so的加载过程与UI线程的其他业务逻辑并行开展。从流程上看,UI线程依旧按照进程创建与初始化、依赖遍历、so加载(此处为协同部分)、ets执行以及其他流程的顺序推进,而子线程则专注于so加载任务。通过这种并行处理的方式,能够避免因so库加载耗时过长而阻塞UI线程,减少应用启动时的等待时间,让应用能够更迅速地完成启动过程。

在HarmonyOS应用开发里,UI组件并行预创建是优化应用性能、提升用户体验的重要手段。它适用于native自绘制框架,比如Reactive Native框架,可通过调用ArkUI C-API接口,让框架自行绘制并提交系统渲染。其机制在于提供命令式接口,支持框架类场景组件在子线程(EAWorker)进行并行预创建,避免阻塞主线程。在传统流程中,主线程按顺序执行event、build、measure、layout、render等操作,最后进入onIdle状态,当帧间时间有限或出现阻塞时,会影响整体性能。而采用UI组件并行预创建后,子线程可以同时进行多个buildNode的构建,充分利用时间,且不阻塞主线程,使得应用在界面渲染和交互响应上更加流畅高效,为用户带来更顺滑的操作体验。

应用打开

在HarmonyOS应用开发中,应用页面打开速度是影响用户体验的关键因素,为此采取了一系列有效的加速策略。对于ArkUI,在列表滑动点击场景运用智能预渲染技术,根据用户交互信息预渲染即将浏览的页面,可实现10% - 60%的性能提升;在Tabs页面切换场景采用Tabs预加载技术,能提升10% - 50%的速度,同时利用全局自定义组件缓存池,可带来10% - 30%的性能优化。

在Ark Web方面,从进程启动到页面渲染的各环节都有优化措施。Web渲染进程预启动可提升5% - 10%,DNS预解析/连接/下载提升5% - 8%,CodeCache缓存/预编译提升10% - 20%,预渲染/智能白屏插帧更是能提升50%。

对于React Native,JS bundle加载和运行通过JSVM引擎加速可提升20% - 30%,组件创建结合毕昇RN深度编译优化能提升3% - 5%。此外,借助ArkUI Inspector、DevEco Studio Profiler等工具,开发者能更好地分析和优化应用性能,从而显著提升应用页面打开速度,为用户带来更加流畅迅速的使用体验。

应用页面内容加载加速

在HarmonyOS应用开发中,为加速应用页面内容加载,从资源下载、图片解码到组件创建、绘制、显示等各环节都采取了针对性优化措施。资源下载方面,通过Prefetcher动态预加载、ImageKnife/Image组件图片预下载以及RCP高性能网络传输框架,大幅减少加载时间;图片解码环节,HarmonyOS 6系统图片解码能力增强,HEIF、JPEG、PNG解码性能均有显著提升;在组件相关流程中,LazyForEach、智能缓存列表项和组件复用等技术,有效降低首页加载时延,减少滑动丢帧和白块概率,降低组件渲染时间。这些优化手段协同作用,为用户带来更流畅快速的应用体验。

除此之外,CPU和内存的优化是提升应用性能、保障流畅用户体验的重要环节,以下从这两个方面介绍相关优化措施:

CPU优化

  • 合理线程管理:避免创建过多不必要的线程,因为线程的创建、切换和销毁都会消耗CPU资源。例如,采用线程池技术,复用已创建的线程来处理任务,减少线程创建和销毁的开销。同时,根据任务的优先级和类型合理分配线程,确保关键任务能及时获得CPU资源。
  • 算法与逻辑优化:优化应用中的算法和数据结构,选择时间复杂度更低的算法来处理数据。比如,在数据搜索场景中,使用高效的搜索算法如二分查找替代线性查找。此外,减少循环中的复杂计算和不必要的函数调用,降低CPU的计算负担。
  • 异步处理:将一些耗时的操作(如网络请求、文件读写等)放在子线程中进行异步处理,避免阻塞主线程。这样可以保证主线程能够及时响应用户的交互操作,提升应用的响应速度,同时也能更合理地利用CPU资源,使CPU在处理不同任务时更加高效。

内存优化

  • 内存泄漏防范:定期检查和修复内存泄漏问题。在HarmonyOS开发中,使用工具如DevEco Studio的内存分析工具来检测对象是否被正确释放。例如,确保在Activity或Ability生命周期结束时,及时释放其持有的资源和对其他对象的引用,避免对象无法被垃圾回收器回收而长期占用内存。
  • 资源合理使用:对应用中的资源(如图片、音频、视频等)进行合理管理。根据实际需求选择合适的资源格式和分辨率,避免加载过大或不必要的资源。例如,对于图片资源,可以采用按需加载和适当压缩的方式,减少内存占用。同时,及时释放不再使用的资源,避免资源在内存中长时间留存。
  • 对象复用:采用对象池等技术,复用已经创建过的对象,减少对象的频繁创建和销毁。比如,在需要频繁创建相同类型对象的场景中,从对象池中获取对象,使用完毕后再放回池中,这样可以降低内存分配和回收的频率,提高内存使用效率,同时也有助于减少CPU在内存管理方面的开销。

性能优化工具

在深入探讨了HarmonyOS应用性能优化的多方面策略,涵盖应用启动、页面加载、CPU与内存优化等关键领域后,我们已然掌握了提升应用性能的核心方法。然而,要将这些优化策略精准实施并取得理想效果,离不开专业工具的辅助。接下来,就让我们一同了解在HarmonyOS应用性能优化过程中发挥重要作用的各类工具,看看它们如何助力开发者打造出更加流畅、高效的应用。

开发阶段(编码、性能调优)

Code Linter:在写完代码后,Code Linter可对代码进行静态检查,及时发现代码写法上的性能问题。它就像一位严谨的代码审查员,从语法和规范的角度,帮助开发者提前规避可能导致性能低下的代码结构,为后续的性能调优奠定基础。

应用与服务性能体检(AppAnalyzer):当应用打包完成后,AppAnalyzer能够发现动态场景下的性能问题。它通过对应用运行时的各项指标进行分析,找出如内存泄漏、CPU占用过高等潜在问题,让开发者在开发阶段就能对应用的性能状况有清晰的认识。

Profiler:作为定位优化性能的场景化、多维度调优工具,Profiler可以在应用运行过程中,对CPU、内存、网络等资源的使用情况进行详细监测和分析。开发者可以根据其提供的直观数据和图表,精准定位性能瓶颈,有针对性地进行优化。

ArkUI Inspector:在优化UI布局时,ArkUI Inspector是不可或缺的工具。它可以实时查看UI组件的层次结构、属性等信息,帮助开发者快速发现和解决UI布局不合理导致的性能问题,如过度绘制、布局复杂度过高等。

上架前自测试阶段

DevEco Testing:为应用的自测试提供了全面的支持,涵盖了多种测试类型和场景。通过自动化测试脚本和丰富的测试用例,能够高效地发现应用中的功能缺陷和性能问题,确保应用在上架前的质量。

云端测试:借助云端强大的计算资源,可以对应用在不同设备、不同环境下的性能表现进行大规模测试。这有助于发现一些在本地测试中难以察觉的问题,提高应用的兼容性和稳定性。

Performance Analysis Kit:提供深入的性能分析功能,从多个维度对应用的性能指标进行评估和分析。通过与行业标准或优秀案例的对比,帮助开发者了解应用在性能方面的优势和不足,为进一步的优化提供参考。

总结

学习《首席专家讲鸿蒙》的HarmonyOS高性能开发模块后,我收获颇丰,直观感受十分强烈。

从知识层面来说,课程构建了一个完整且深入的知识体系。从高性能体验标准的明确界定,到应用启动、页面打开、内容加载等各个环节的细致优化策略,再到CPU和内存优化的具体方法,每一个知识点都紧密相连,形成了一个有机的整体。这让我对HarmonyOS高性能开发有了全面且深入的理解,不再局限于表面的操作,而是能够从底层原理出发,去思考和解决性能问题。

在实践技能方面,课程中介绍的各类优化技术和工具,为我提供了切实可行的操作方法。进程缓存策略、延迟加载机制、应用so并行加载等技术,以及Code Linter、Profiler、ArkUI Inspector等工具,都让我在实际开发中有了更多的“武器”来应对性能挑战。通过学习和实践这些内容,我能够更加高效地优化应用性能,提升用户体验。

从个人成长角度来看,这门课程极大地拓宽了我的技术视野。与华为首席架构师团队的交流和学习,让我接触到了行业内最前沿的技术理念和开发思路。同时,通过解决实际项目中的性能问题,我的问题解决能力和创新思维也得到了锻炼和提升。

总的来说,参与《首席专家讲鸿蒙》课程学习是一次非常宝贵的经历。它不仅让我在技术上有了显著的提升,更为我在HarmonyOS开发领域的职业发展奠定了坚实的基础。我相信,这些所学知识和技能将在我未来的开发工作中发挥重要作用,助力我打造出更多高性能、高质量的应用。

更多精彩内容等你发现,快来加入鸿蒙技术交流社群吧!

https://work.weixin.qq.com/gm/afdd8c7246e72c0e94abdbd21bc9c5c1

 

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐