React Native VS Flutter評測

image

之前分別用iOS原生和Flutter寫了一個空氣質(zhì)量App并對它們對性能汉矿、容量等做了對比評測. 很多小伙伴在下方留言說這樣的對比沒有意義, 認(rèn)為Flutter根本不是用來替代原生也不可能超越原生開發(fā). 我這里先做一個解釋:

我在對比評測中提供了盡可能多的數(shù)據(jù), 并不是想證明Flutter和原生比有多爛, 而是想告訴你如果選擇了Flutter你的App包會增長多少倍女阀、對App啟動速度的影響會有多少秒, 好讓大家將來在定技術(shù)棧的時候能夠盡量心中有數(shù).

當(dāng)然也有網(wǎng)友提出和應(yīng)該React Native來做對比, 畢竟這兩個都是主攻跨平臺開發(fā). 其實我早就想做一個類似的對比評測, 前段時間公司出現(xiàn)變動, 周末難得抽空做了一個React Native版的Demo, 最終得出了今天這份評測報告.

Aireport(iOS原生)

Aireport Flutter(Flutter版)

RN版還在審核中, 大家可以自行下載體驗一下.

1.安裝包大小

Flutter應(yīng)用安裝包和安裝后容量


image

React Native應(yīng)用安裝包和安裝后容量


image

這個差距, emmmmmm, 這里給出iOS原生版應(yīng)用的大小大約在2.5MB, 也就是說RN已經(jīng)做到了比原生還要小的安裝包. 這主要歸功于兩點:
  • 基于iOS自帶的UI框架而非Flutter這樣的自有框架(Flutter SDK有30MB左右)
  • 使用了OC而非Swift作為開發(fā)語言(本次預(yù)測大失敗, Swift5并沒有隨著WWDC放出, 也就沒能集成到iOS12中....)
  • iOS原生版其實實現(xiàn)了比其他版本更多的功能, 比如Weiget找爱、通知
image

React Native較小的安裝包帶來的優(yōu)勢不僅是降低了下載門檻、減少了磁盤占用, 而且對于混合開發(fā)的壓力也更小. 試想一個原生App因為幾個頁面使用了Flutter, 一行代碼沒寫安裝包就憑空增加了30MB, 這樣的結(jié)果不是開發(fā)人員希望看到的.

2.啟動速度

image

啟動速度RN依然與原生不相上下, 并且要比Flutter好上一個等級. RN雖然使用js來構(gòu)建應(yīng)用程序, 但最終RN會將js轉(zhuǎn)化成原生代碼. 這就讓RN的運行效率高出Flutter好幾倍.

3.內(nèi)存占用

image

內(nèi)存占用方面, RN顯然沒有原生做的好, 與Flutter的差距也不大, 而且經(jīng)測試發(fā)現(xiàn), RN的內(nèi)存占用不是很穩(wěn)定, 頁面剛生成的時候內(nèi)存占用會高一點, 之后緩慢回落.

image

通過Xcode工具我們可以看到, RN(React-Native-Navigate)并沒有使用iOS系統(tǒng)的導(dǎo)航系統(tǒng), 而是以一種相對粗暴的形式直接覆蓋在了上一個View上. 相反iOS原生系統(tǒng)的頁面切換會在新頁面顯示完畢后將前一個頁面去掉(不做渲染), 這樣可以有效節(jié)省內(nèi)存的消耗. 此外, RN的控件也沒有使用UIKit中的現(xiàn)有組件, 而是通過最基本的UIView去組合模仿(比如NavigationBar). 這樣做雖然可以減少安卓和iOS之間UI層的差異, 但顯然優(yōu)化的空間就變小了.

4.流暢度

React Native幀率


image

Flutter幀率


image

iOS原生幀率
image

我們可以看到, RN得益于UIKit的加持, 整體流暢度和原生非常接近, 比聲稱60幀的Flutter要好. 尤其是搜索頁滾動的幀率. 但是在頁面切換(紅色區(qū)域)時漏出了馬腳, 原因就在于上面提到的, RN并沒有使用系統(tǒng)自帶的導(dǎo)航系統(tǒng), 而是自己做了一個類似的平移動畫. 很可惜, 這個動畫并沒有跑滿60幀, 但也要比Flutter好一點.

觀察動畫的時間和曲線可以發(fā)現(xiàn), 原生的跳轉(zhuǎn)動畫時間更長, 但他的加速效果也是最好的, 其他兩個平臺的跳轉(zhuǎn)動畫就略顯生硬.

最后可以分別觀察一下CPU的占用, RN的表現(xiàn)可以說是非常好了, 尤其是在TableView滾動的時候, 其原因也很簡單, 它沒有使用reuse pool, 因此不需要頻繁修改已存在的Cell, 壞處是隨著Cell的增多, 內(nèi)存壓力也會越來越大.

5.iOS特性支持

由于最后還是用原生語言去實現(xiàn), RN先天可以得到iOS的部分特性. 而且相比于Flutter, 線上熱更新才是它真正的殺手锏. Flutter雖然理論上可以實現(xiàn), 但部署起來還有很多的問題需要解決, 一切還是未知數(shù). 此外, RN和Flutter都支持混編, 這就幾乎解決了實現(xiàn)上的所有問題. 唯一的問題是, 有多少功能和特性需要用原生去實現(xiàn), 這樣的維護(hù)成本又有多高.

最后的最后還是要說一下, Flutter目前還在測試版, 不建議在生產(chǎn)環(huán)境使用, 因此以上做出的對比并不能代表Flutter最終的真實水平. 但可以預(yù)見, 在短期內(nèi)Flutter還是無法撬動RN在跨平臺開發(fā)中的地位, RN仍舊是目前跨平臺開發(fā)的最優(yōu)解. 但不可否認(rèn)Flutter確實實現(xiàn)了Write Once,Run Anywhere, 只不過至少在Fuchsia出來之前, 我們都無法完整評估它的真實價值.

最后給出GitHub地址:

Aireport(iOS原生)

Aireport Flutter(Flutter版)

Aireport Flutter(React Native版)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末黍氮,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蜻拨,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桩引,死亡現(xiàn)場離奇詭異缎讼,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)坑匠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門血崭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人厘灼,你說我怎么就攤上這事夹纫。” “怎么了设凹?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵舰讹,是天一觀的道長。 經(jīng)常有香客問我闪朱,道長月匣,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任奋姿,我火速辦了婚禮锄开,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘胀蛮。我一直安慰自己院刁,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布粪狼。 她就那樣靜靜地躺著退腥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪再榄。 梳的紋絲不亂的頭發(fā)上狡刘,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機(jī)與錄音困鸥,去河邊找鬼嗅蔬。 笑死剑按,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的澜术。 我是一名探鬼主播艺蝴,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鸟废!你這毒婦竟也來了猜敢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤盒延,失蹤者是張志新(化名)和其女友劉穎缩擂,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體添寺,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡胯盯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了计露。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片博脑。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖薄坏,靈堂內(nèi)的尸體忽然破棺而出趋厉,到底是詐尸還是另有隱情寨闹,我是刑警寧澤胶坠,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站繁堡,受9級特大地震影響沈善,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜椭蹄,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一闻牡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧绳矩,春花似錦罩润、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至应媚,卻和暖如春严沥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背中姜。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工消玄, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓翩瓜,卻偏偏與公主長得像受扳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子兔跌,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容