近日,快手公司在Gitee代碼托管平臺上推出了一項針對鴻蒙應(yīng)用性能優(yōu)化的創(chuàng)新解決方案——“QuickTransformer”。該方案專注于優(yōu)化鴻蒙應(yīng)用開發(fā)中常用的第三方庫“class-transformer”,顯著提升了數(shù)據(jù)反序列化的效率,使得在特定應(yīng)用場景下的數(shù)據(jù)轉(zhuǎn)換時間減少了約90%,為鴻蒙應(yīng)用用戶帶來了更為流暢的操作體驗和更快的交互響應(yīng)速度。
“class-transformer”庫在鴻蒙應(yīng)用開發(fā)中扮演著重要角色,它負責(zé)將普通對象(例如JSON數(shù)據(jù))與類實例之間進行轉(zhuǎn)換,是實現(xiàn)面向?qū)ο缶幊膛c數(shù)據(jù)序列化處理的關(guān)鍵工具。然而,隨著應(yīng)用程序復(fù)雜度的增加,該庫在反序列化過程中的性能問題逐漸顯現(xiàn),影響了用戶的核心體驗。因此,對“class-transformer”進行優(yōu)化成為了提升應(yīng)用性能的關(guān)鍵。
然而,對“class-transformer”的優(yōu)化面臨著不小的挑戰(zhàn)。由于該庫在應(yīng)用中被廣泛應(yīng)用且深度集成,對其進行改造的難度較大。不同業(yè)務(wù)場景中的model類之間存在高度耦合,使得難以按照業(yè)務(wù)場景進行漸進式的優(yōu)化改造。
為了應(yīng)對這些挑戰(zhàn),快手公司推出了“QuickTransformer”方案。該方案基于“class-transformer”的裝飾器使用代碼,在編譯時生成輔助函數(shù),并在運行時通過hook機制自動替換原有的反序列化調(diào)用邏輯,從而實現(xiàn)性能的提升。更重要的是,“QuickTransformer”支持以model類為單位進行配置和開啟,即使在多個model類耦合的場景下,也可以只對部分model類進行優(yōu)化。
“QuickTransformer”的最大亮點在于其無需修改“class-transformer”的使用代碼即可實現(xiàn)性能優(yōu)化。這一特性既保持了對原有開發(fā)模式的兼容性,又大幅提升了應(yīng)用的運行效率。整體改造過程無侵入性、低成本且低風(fēng)險,非常適合已有項目的快速集成和上線。
在實際應(yīng)用中,“QuickTransformer”展現(xiàn)出了卓越的性能提升效果。以快手主APP為例,該應(yīng)用在反序列化方面大規(guī)模使用了“class-transformer”,涵蓋了成員變量重命名、類型轉(zhuǎn)換、層級轉(zhuǎn)換以及添加成員函數(shù)等多個場景。在經(jīng)過“QuickTransformer”優(yōu)化后,這些典型場景下的數(shù)據(jù)轉(zhuǎn)換時間從100毫秒降低到了10毫秒以內(nèi),顯著改善了頁面滑動卡頓和點擊響應(yīng)慢等問題。