简评: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 导读三篇优质英文文章。
扩展阅读: