簡評:React-Native 號稱性能能與原生應用媲美的移動混合開發框架,是否真如傳聞說的那么厲害,來看看這組性能評測。
“React-Native” 是一種移動混合開發框架,它可以讓你只使用JavaScript 來構建應用程序。與其他混合移動技術不同的是,你并不是構建一個“移動端的 Web 應用”(簡單的把 Web 應用封裝在原生應用中),而是把你的 JavaScript 代碼編譯為手機應用,這于 Objective-C 構建的 iOS 應用程序或使用 Java 構建的 Android 應用程序非常接近。這意味著,在沒有任何缺點的情況下,該公司從本地和混合移動應用程序中提供了好處。
我的目標是確定 React-Native 是否如他們所宣傳的一樣。為了實現這一點,我需要使用 Swift 和 React-Native 構建相同的應用程序,它需要足夠簡單,以便我能夠及時學習兩種語言并完成應用程序,但是足夠復雜,以便我能夠比較每個應用程序的 CPU,GPU 內存使用情況和電源使用情況。
測試應用
這兩個項目都實現了相同的效果,如果對項目感興趣可以研究一下這兩個項目。
- Swift 版本:jcalderaio/swift-honors-app
- React-Native 版本: jcalderaio/react-native-honors-app
這個測試應用包含四個頁面:
-
第一個頁面將被命名為“Profile”,并將提示用戶登錄到Facebook,以便檢索用戶的個人資料照片,姓名和電子郵件,并將其顯示在頁面上。
-
第二個頁面命名為 “To Do List”,并使用 NSUserDefaults(iPhone內部存儲器)進行簡單的列表操作。它將具有 “添加項目” 和 “刪除項目” 功能。
-
第三個頁面命名為 “Page View”,它將包含一個 Page View Controller。 Page View Controller 將有三個用戶可以滑動的屏幕(“綠色”,“紅色”和“藍色”屏幕)。
-
最后一個頁面命名為 “Map”,它將包含一個 Map View,用于定位用戶的當前位置,地圖上的藍點表示用戶的位置。
CPU 測試
GPU 測試
內存測試
結論
我為 Swift 和 React-Native 構建的移動應用程序的外觀幾乎相同。從我通過在四個頁面中的每個任務中測量應用程序的 CPU,GPU 和內存的使用情況所收集的數據可以看出,應用程序的性能幾乎相同。 總的來說 Swift CPU 的使用率較低的,React-Nativ 中對 GPU 的使用率較低(幾乎沒有),并且可以看出 React-Native 的地圖組件 的內存使用率遠低于 Swift 的地圖組件 。我可以從這些數據推斷,Swif t比 React-Native 更有效地使用了 iPhone 的 CPU,React-Native 比 Swift 更有效地使用了 iPhone 的 GPU,而 React-Native 以更有效的方式利用了iPhone 的內存,贏得了三個測試項中的兩兩項,成為表現最好的平臺。
這里沒有對原生 Android 進行比較。iOS 是我首選的平臺,所以我最關心的是它。不過,我可能會盡快在 Android 上嘗試相同的實驗。我很好奇會有什么樣的結果,但我愿意打賭,如果 React-Native 應用可以擊敗原生 iOS 應用的性能,那么它同樣可以打敗原生 Android 應用的性能。
我現在比以往任何時候都更相信 React-Native 是未來的框架 - 它具有如此多的優點和如此少的缺點。 React-Native 可以用 Javascript 編寫(許多開發人員已經知道的語言),它的代碼庫可以部署到 iOS 和 Android 平臺,生產應用程序的速度更快,更便宜,開發人員可以直接將更新推送給用戶,以便用戶不用擔心下載更新。最重要的是,只有一年的時間,React-Native已經超越了原生iOS Swift應用程序。
原文: Comparing the Performance between Native iOS (Swift) and React-Native
歡迎關注知乎專欄「極光日報」,每天為 Makers 導讀三篇優質英文文章。
擴展閱讀: