簡(jiǎn)評(píng):React-Native 號(hào)稱性能能與原生應(yīng)用媲美的移動(dòng)混合開發(fā)框架,是否真如傳聞?wù)f的那么厲害排宰,來看看這組性能評(píng)測(cè)官辽。
“React-Native” 是一種移動(dòng)混合開發(fā)框架汛聚,它可以讓你只使用JavaScript 來構(gòu)建應(yīng)用程序刻像。與其他混合移動(dòng)技術(shù)不同的是畅买,你并不是構(gòu)建一個(gè)“移動(dòng)端的 Web 應(yīng)用”(簡(jiǎn)單的把 Web 應(yīng)用封裝在原生應(yīng)用中),而是把你的 JavaScript 代碼編譯為手機(jī)應(yīng)用细睡,這于 Objective-C 構(gòu)建的 iOS 應(yīng)用程序或使用 Java 構(gòu)建的 Android 應(yīng)用程序非常接近谷羞。這意味著,在沒有任何缺點(diǎn)的情況下溜徙,該公司從本地和混合移動(dòng)應(yīng)用程序中提供了好處湃缎。
我的目標(biāo)是確定 React-Native 是否如他們所宣傳的一樣犀填。為了實(shí)現(xiàn)這一點(diǎn),我需要使用 Swift 和 React-Native 構(gòu)建相同的應(yīng)用程序嗓违,它需要足夠簡(jiǎn)單九巡,以便我能夠及時(shí)學(xué)習(xí)兩種語言并完成應(yīng)用程序,但是足夠復(fù)雜靠瞎,以便我能夠比較每個(gè)應(yīng)用程序的 CPU比庄,GPU 內(nèi)存使用情況和電源使用情況求妹。
測(cè)試應(yīng)用
這兩個(gè)項(xiàng)目都實(shí)現(xiàn)了相同的效果乏盐,如果對(duì)項(xiàng)目感興趣可以研究一下這兩個(gè)項(xiàng)目。
- Swift 版本:jcalderaio/swift-honors-app
- React-Native 版本: jcalderaio/react-native-honors-app
這個(gè)測(cè)試應(yīng)用包含四個(gè)頁面:
-
第一個(gè)頁面將被命名為“Profile”制恍,并將提示用戶登錄到Facebook父能,以便檢索用戶的個(gè)人資料照片,姓名和電子郵件净神,并將其顯示在頁面上何吝。
-
第二個(gè)頁面命名為 “To Do List”,并使用 NSUserDefaults(iPhone內(nèi)部存儲(chǔ)器)進(jìn)行簡(jiǎn)單的列表操作鹃唯。它將具有 “添加項(xiàng)目” 和 “刪除項(xiàng)目” 功能爱榕。
-
第三個(gè)頁面命名為 “Page View”,它將包含一個(gè) Page View Controller坡慌。 Page View Controller 將有三個(gè)用戶可以滑動(dòng)的屏幕(“綠色”黔酥,“紅色”和“藍(lán)色”屏幕)。
-
最后一個(gè)頁面命名為 “Map”洪橘,它將包含一個(gè) Map View跪者,用于定位用戶的當(dāng)前位置,地圖上的藍(lán)點(diǎn)表示用戶的位置熄求。
CPU 測(cè)試
GPU 測(cè)試
內(nèi)存測(cè)試
結(jié)論
我為 Swift 和 React-Native 構(gòu)建的移動(dòng)應(yīng)用程序的外觀幾乎相同渣玲。從我通過在四個(gè)頁面中的每個(gè)任務(wù)中測(cè)量應(yīng)用程序的 CPU,GPU 和內(nèi)存的使用情況所收集的數(shù)據(jù)可以看出弟晚,應(yīng)用程序的性能幾乎相同忘衍。 總的來說 Swift CPU 的使用率較低的,React-Nativ 中對(duì) GPU 的使用率較低(幾乎沒有)卿城,并且可以看出 React-Native 的地圖組件 的內(nèi)存使用率遠(yuǎn)低于 Swift 的地圖組件 枚钓。我可以從這些數(shù)據(jù)推斷,Swif t比 React-Native 更有效地使用了 iPhone 的 CPU藻雪,React-Native 比 Swift 更有效地使用了 iPhone 的 GPU秘噪,而 React-Native 以更有效的方式利用了iPhone 的內(nèi)存,贏得了三個(gè)測(cè)試項(xiàng)中的兩兩項(xiàng)勉耀,成為表現(xiàn)最好的平臺(tái)指煎。
這里沒有對(duì)原生 Android 進(jìn)行比較蹋偏。iOS 是我首選的平臺(tái),所以我最關(guān)心的是它至壤。不過威始,我可能會(huì)盡快在 Android 上嘗試相同的實(shí)驗(yàn)。我很好奇會(huì)有什么樣的結(jié)果像街,但我愿意打賭黎棠,如果 React-Native 應(yīng)用可以擊敗原生 iOS 應(yīng)用的性能,那么它同樣可以打敗原生 Android 應(yīng)用的性能镰绎。
我現(xiàn)在比以往任何時(shí)候都更相信 React-Native 是未來的框架 - 它具有如此多的優(yōu)點(diǎn)和如此少的缺點(diǎn)。 React-Native 可以用 Javascript 編寫(許多開發(fā)人員已經(jīng)知道的語言)畴栖,它的代碼庫(kù)可以部署到 iOS 和 Android 平臺(tái)随静,生產(chǎn)應(yīng)用程序的速度更快,更便宜吗讶,開發(fā)人員可以直接將更新推送給用戶燎猛,以便用戶不用擔(dān)心下載更新。最重要的是照皆,只有一年的時(shí)間重绷,React-Native已經(jīng)超越了原生iOS Swift應(yīng)用程序。
原文: Comparing the Performance between Native iOS (Swift) and React-Native
歡迎關(guān)注知乎專欄「極光日?qǐng)?bào)」膜毁,每天為 Makers 導(dǎo)讀三篇優(yōu)質(zhì)英文文章昭卓。
擴(kuò)展閱讀: