日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

流言终结者- Flutter和RN谁才是更好的跨端开发方案?

發布時間:2024/8/23 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 流言终结者- Flutter和RN谁才是更好的跨端开发方案? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景

論壇上很多小伙伴關心為什么閑魚選擇了Flutter而不選擇其他跨端方案?站在質量的角度,高性能是一個很重的因素,我們使用Flutter重寫了寶貝詳情頁之后,對比了Flutter和Native詳情頁的性能表現,結論是中高端機型上Flutter和Native不相上下,在低端機型上,Flutter會比Native更加的流暢,其實閑魚團隊在使用Flutter做詳情頁過程中,沒有更多地關注性能優化,為了更快地上線,也是優先功能的實現,不過測試結果出來之后,卻出乎意料地優于原先的Native的實現(具體的測試結果,屬于敏感數據,要走披露流程,傷不起…)

但是這樣很顯然不能敷衍過去,仔細想了想,確實Flutter的定位并不是要替代Native,他只想做一個極致的跨端解決方案,所以還是要回到跨端解決方案的賽道,給您從性能角度比一比,誰才是更好的跨端開發方案?

參賽選手

[Flutter]

Flutter is Google’s mobile app SDK for crafting high-quality native interfaces on iOS and Android in record time. Flutter works with existing code, is used by developers and organizations around the world, and is free and open source.

[REACT NATIVE]

We're working on a large-scale rearchitecture of React Native to make it more flexible and integrate better with native infrastructure in hybrid JavaScript/native apps.

鳴鑼開賽

怎么比

怎么比較確實傷腦筋,自己也寫了一個Flutter 和 一個RN的App,但是實在太丑陋,擔心大家關注點都到我的爛代碼上了,所以在Github上找到了一個跨端開發高手Car Guo,用Flutter和RN分別實現的一個實際可用的App,Car Guo謙虛表示其實也寫的比較粗糙,但是在我看來這個是具備真實使用場景的App(Github客戶端App,提供豐富的功能,旨在更好的日常管理和維護個人Github),還是有代表性的
[Flutter]?https://github.com/CarGuo/GSYGithubAppFlutter
[REACT NATIVE]?https://github.com/CarGuo/GSYGithubApp

場景

1、默認登錄成功
2、“動態”頁,點擊搜索按鈕,搜索關鍵字“Java”,正常速度瀏覽3頁,等第4頁加載完成后回退
3、點擊“趨勢”頁Tab,瀏覽Feeds到頁面底部,點擊最底部的Item,進入Item后,瀏覽詳情+瀏覽3頁的動態后回退,到“我的”Tab頁
4、查看“我的”Feeds到底部,點擊右上角搜索按鈕,搜索關鍵字“C”,瀏覽3頁后,等第4頁加載完成后場景結束

測試工具

  • iOS
  • 掌中測(iOS端):CPU,內存
  • Instruments:FPS
  • Android
  • 基于Adb的Shell腳本:CPU,內存,FPS

測試機型

  • iOS:iPhone 5c 9.0.1 / iPhone 6s 10.3.2
  • Android:Xiaomi 2s 5.0.2 / Sumsung S8 7.0

數據分析

iOS

iPhone 5c 9.0.1

iPhone 6s 10.3.2

測試結論

1、Flutter在低端和中端的iOS機型上,FPS的表現都優于RN
2、CPU的使用上Flutter在低端機上表現略差于RN,中端機型略優于RN
3、值得注意的是內存上的表現(上圖紅色箭頭區域),Flutter在低端機型上的起始內存和RN幾乎一致,在中端機型上會多30M左右的內存(分析為Dart VM的內存),可以想到這應該是Flutter針對低端和中端機型上內存策略是不一樣的,可用內存少的機型,Dart VM的初始內存少,運行時進行分配(這樣也可以理解為什么在低端機上帶來了更多的CPU損耗),中端機器上預分配了更多的VM內存,這樣在處理時會更加的游刃有余,減少CPU的介入,帶來更流暢的體驗.
可以看出,Flutter團隊在針對不同機型上處理更加的細膩,目的就是為了帶來穩定流暢的體驗。

Android

Xiaomi 2s 5.0.2

Sumsung S8 7.0

  • 注: MFS - Max Frame Space: 指的是去掉buffer之后的兩幀的時間差

測試結論

1、Flutter在高低端機的CPU上的表現都優于RN,尤其在低端的小米2s上有著更優的表現
2、Android端在原來FPS基礎上增加了流暢度的指標,FPS和流暢度的表現Flutter優于RN(計算規則見附參考文章)
3、Android端的內存也是值得關注的一點,在小米2s上起始內存Flutter明顯比RN多40M,RN在測試過程中內存飛漲,Flutter相比之下會更穩定,內存上RN側的代碼是需要調優的,同一套代碼Flutter在Android和iOS上并沒有很大的差異,但是RN的卻要在單端調優,Flutter在這項比拼上又更勝一籌。
比較奇怪的是三星S8上Flutter和RN的初始內存是一致的,猜測是RN也Android高端機型上也會預分配一些內存,具體細節還需要更進一步的研究。

升旗儀式

看了之前的數據,做為裁判的我會把金牌頒給Flutter,在測試過程中的體驗和數據上來看Flutter都優于RN,并且開發這個App的是一位Android的開發同學,Flutter和RN對于他來說都是全新的技術棧,Car Guo同學更傾向性地讓大家得到一致性的使用體驗,性能方面并沒有投入太多的時間進行調優,由此看出Flutter在跨端開發上在同樣投入的情況下,可以獲得更佳的性能,更好的用戶體驗。

一些思考

拿到了這些數據,也感受到Flutter帶來福利,那Flutter為什么可以做到這么流暢呢?Flutter是如何優化了渲染,Dart VM的Runtime是怎么玩的?請大家繼續關注后續解密文章,感興趣的同學歡迎加入閑魚,成為跨端解決方案的領軍者。

參考

  • Android FPS&流暢度:?https://testerhome.com/topics/4775
  • Android 內存獲取方式:
    dumpsys meminfo packageName
  • Android CPU 通過busybox 執行 top命令獲取
  • iOS CPU獲取方式:累計每個線程中的CPU利用率
for (j = 0; j < thread_count; j++) { ATCPUDO *cpuDO = [[ATCPUDO alloc] init]; char name[256]; pthread_t pt = pthread_from_mach_thread_np(thread_list[j]); if (pt) { name[0] = '\0'; __unused int rc = pthread_getname_np(pt, name, sizeof name); cpuDO.threadid = thread_list[j]; cpuDO.identify = [NSString stringWithFormat:@"%s",name]; } thread_info_count = THREAD_INFO_MAX; kr = thread_info(thread_list[j], THREAD_BASIC_INFO,(thread_info_t)thinfo, &thread_info_count); if (kr != KERN_SUCCESS) { return nil; } basic_info_th = (thread_basic_info_t)thinfo; if (!(basic_info_th->flags & TH_FLAGS_IDLE)) { tot_sec = tot_sec + basic_info_th->user_time.seconds + basic_info_th->system_time.seconds; tot_usec = tot_usec + basic_info_th->system_time.microseconds + basic_info_th->system_time.microseconds; tot_cpu = tot_cpu + basic_info_th->cpu_usage / (float)TH_USAGE_SCALE * 100.0; cpuDO.usage = basic_info_th->cpu_usage / (float)TH_USAGE_SCALE * 100.0; if (container) { [container addObject:cpuDO]; } } } // for each thread
  • iOS 內存獲取方式:測試過程中使用的是phys_footprint,是最準確的物理內存,很多開源軟件用的是resident_size(這個值代表的是常駐內存,并不能很好地表現出真實內存變化,這可以另開文章細談)
if ([[UIDevice currentDevice].systemVersion intValue] < 10) { kern_return_t kr; mach_msg_type_number_t info_count; task_vm_info_data_t vm_info; info_count = TASK_VM_INFO_COUNT; kr = task_info(mach_task_self(), TASK_VM_INFO_PURGEABLE, (task_info_t)&vm_info,&info_count); if (kr == KERN_SUCCESS) { return (vm_size_t)(vm_info.internal + vm_info.compressed - vm_info.purgeable_volatile_pmap); } return 0; }task_vm_info_data_t vmInfo; mach_msg_type_number_t count = TASK_VM_INFO_COUNT; kern_return_t result = task_info(mach_task_self(), TASK_VM_INFO, (task_info_t) &vmInfo, &count); if (result != KERN_SUCCESS) return 0; return (vm_size_t)vmInfo.phys_footprint;


原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。

總結

以上是生活随笔為你收集整理的流言终结者- Flutter和RN谁才是更好的跨端开发方案?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲欧洲免费 | 女人做爰全过程免费观看美女 | 狠狠干2021| 日本少妇xxxx动漫 | 久久精品在这里 | 中文字幕在线观看视频免费 | 日本一区二区色 | 激情999| 亚洲麻豆一区 | 亚洲wwwwww| 亚洲第一免费 | 欧美成人乱码一区二区三区 | xx69欧美| 天天操精品 | 欧美天堂网站 | 黄色污污视频软件 | 久久国产成人精品国产成人亚洲 | 亚洲精品日韩精品 | 免费看日批 | 亚洲男女激情 | 免费成人黄色片 | 久久精品视频久久 | 中文字幕中文在线 | 最新日韩在线视频 | 天天干天天弄 | www.白浆 | 毛片视频播放 | 黑人操日本女人视频 | 精品aaa | 图片区视频区小说区 | 亚洲久久在线观看 | 国产精品九九九九九 | 欢乐谷在线观看免费播放高清 | 国产女女调教女同 | 看了让人下面流水的视频 | 色婷婷成人网 | 韩国三级在线播放 | 欧美成人久久久 | 中文字幕一区二区三区波野结 | 激情网站在线 | 天天摸天天做 | 成人在线免费视频 | 婷婷色在线视频 | 四虎国产视频 | 凹凸福利视频 | 一本久久道 | 99在线精品免费视频 | 欧美高清在线一区 | 美女裸体跪姿扒开屁股无内裤 | 国产黄网在线观看 | 中文字幕精品一区 | xxxxx日韩| 欧美乱码精品一区二区三区 | 欧美另类videossexo高潮 | 五月天爱爱 | 91精品国产乱码在线观看 | 日本黄色a级片 | 天天狠天天插 | 亚洲免费看av| 久久网址 | 色一涩 | 精品一区二区视频在线观看 | 天天干影院 | 诱人的乳峰奶水hd | 九色国产精品 | 免费拍拍拍网站 | 森泽佳奈中文字幕 | 岛国大片在线观看 | 综合久久五月 | 中文字幕高清在线免费播放 | 国精产品一区二区 | 在线看黄免费 | 男女性生活毛片 | 色视频综合| 久操免费在线视频 | 91免费国产在线观看 | 国产精品探花在线观看 | 男人天堂视频在线观看 | 1769国产精品 | 国产美女被遭强高潮免费网站 | 婷婷激情丁香 | 国产一级二级三级视频 | 国产伦精品一区二区三区免费 | 中国老太婆性视频 | 天堂素人约啪 | 91视频在线免费看 | 久久7777| 久久久老熟女一区二区三区91 | 亚洲日本视频在线观看 | 亚洲精品国产精品国自产观看 | 熟女性饥渴一区二区三区 | 精品免费一区二区 | 亚洲高清天堂 | 色亚洲天堂 | 亚洲成人不卡 | 成人午夜视频在线 | 国产精品粉嫩 | 亚洲妇女av | 一级的大片|