Flutter vs React Native 性能测试结果
liuian 2025-05-21 14:58 12 浏览
Flutter vs React Native性能测试结果:谁才是王者?
大家好,我是猫哥。今天会去讲一下Flutter和React Native的性能比较的情况。
首先说一下React Native猫哥最早的一批去使用的,因为那个年代都是处于ipad1和ipad2那个年代。最早的时候都用的是v-ray 6去渲染,加一些动画,切换时候会有卡顿这种情况,然后就会不敢去用动画。
用了React Native写了点测试,发现它的动画效果还是挺好的,体验也不错,所以就开始尝试用React Native,后来发现它的生态也好,性能也好,也是不错的。
前些年猫哥也是把Flutter引入团队,用在了一些小的项目,比如有二十个配角这种页面的项目,也是发现Flutter生态也是比较活跃的,性能也是让我们感觉也不错。最好的一点就是Flutter做两端的适配成本会比React Native低,真的是这样。
如果对Flutter开发感兴趣可以看一下猫哥的学习站,猫哥的课程也是渐进的设计,从基础到进阶,让你快速的去落地应用,去上线。同时猫哥还整理了一个资源站,这个站把一些优秀做的插件根据分类去整理了一下,还把一些优秀的开源的Flutter项目也整理出来了,还写了一个排名。
所以假如正在找这些资料可以来看一下,关于这一块先讲到这里,一起来看一下今天测试的方法。
有同学在把代码放在了github上面,它是提供了三个程序,这边给大家跑一下。
·第一个程序是做了一千行的大列表,第一张图是不动,第二张图是旋转,这是大列表,可能是考验滚动的情况。
·第二个就是开了两百个图片,又是旋转,又是放大缩小等,做了一些这样的操作,全是动画。
·第三个是跑了一些lottie的动画,是这样的情况,跑起来之后电脑已经百分之九十九了。
继续说测试基准测试过程,三个app已经知道了,是在M1 Mac上的机器上去跑的,这个系统是跑在安卓上面跑一端,因为安卓ios现在情况有点复杂,在安卓上就会去跑。
性能收集是用安卓的profiler的工具在做收集cpu和内存的情况,FPS帧数是分别用他们自己带的生态的开发工具的监控的数据在看。框架版本是React Native 0.74,这个版也是一个稳定版,现在好像最新的是零点七五。Flutter 是三点一九,其实现在比较好的渲染引擎是三点二,他没有用,用三点一九都是比较保守的方案。
直接来说结果。
·第一个,刚才看到的一个大列表,一千行的大列表。
·来看结果,第一个就是 apk 打包完之后,官方默认模板打包完之后,Flutter 是控制在了二十兆以内,其实这个还可以了,就没差多少兆。
·帧数就是Flutter是稳定的六十帧,这边React Native 52.5,差一点点。
·内存就是React Native会多一点,在滚动的时候是比较关键,滚动的时候看内存回收情况,React Native 就是比较高,不回收也是有道理的,可能是为了性能好一点,因为频繁的去释放内存是耗cpu的。
·cpu的使用,这边React Native 还是有点高,这其实是需要优化的,可能是跟引擎有关系,所以整体来说还是React Native的内存和cpu消耗在滚动的时候会高一点。
·再看第二个,不是有很多图片又旋转又透明什么的吗?一个是 apk 的size,React Native 还是会大一点。帧数基本上持平,这个还是很不错的,React Native 处理这种图片的还是不错的。就是 React Native 内存有点夸张,内存占用比较高。cpu也高,就是耗资源。
·也说到了一点,就是在动画启动的时候React Native 出现了FPS下降,这个情况其实还是跟引擎有关系,这是比较根本的东西。
·最后是 Lottie 的动画的测试,测试时候发现React Native apk size还在高,FPS不错。在引擎对Lottie的动画的处理上面还是帧数有保证。内存占用有点高,cpu有点高的比较多一点,所以还是有待优化的。
这边也是说了,如果Lottie在3.22上应该会有明显提升,因为3.22的目标是能够跑游戏引擎,所以未来Flutter 的引擎还会更好一点。
启动项目的对比就是从代码到运行整个过程消耗,创建app可以看到React Native 非常高,但是可能不太准,因为第一次会去下载依赖包,跟一个React Native 的同学应该是知道的,有很多依赖包要去下载。其实这个不太准,为什么?安卓本身会有一些依赖项。
同样的问题,在Flutter 上面也是会有这样的问题存在。启动程序方面,这种其实差别不是特别大的,一秒钟,这种几秒钟其实还可以,就是JS Bundle Time,Flutter不存在的。apk size,React Native还是比较大,就算指定cpu类型还是比较大,这个是需要瘦身的。
最后说个结论,还是Flutter整体来说,不管是尺寸、cpu、内存、滚动的消耗都会比rReact Native 性能好一点。
今天就快速的讲了一下关于Flutter 和 React Native的对比情况,谢谢大家。更多内容点击主页查看。
- 上一篇:定位Flutter内存问题很难么?
- 下一篇:Flutter——按钮
相关推荐
- MySQL合集-mysql5.7及mysql8的一些特性
-
1、Json支持及虚拟列1.1jsonJson在5.7.8原生支持,在8.0引入了json字段的部分更新(jsonpartialupdate)以及两个聚合函数,JSON_OBJECTAGG,JS...
- MySQL 双表架构在房产中介房源管理中的深度实践
-
MySQL房源与价格双表封神:降价提醒实时推送客户房产中介实战:MySQL空间函数精准定位学区房MySQL狠招:JSON字段实现房源标签自由组合筛选房源信息与价格变更联动:MySQL黄金搭档解决客户看...
- MySQL 5.7 JSON 数据类型使用总结
-
从MySQL5.7.8开始,MySQL支持原生的JSON数据类型。MySQL支持RFC7159定义的全部json数据类型,具体的包含四种基本类型(strings,numbers,boolea...
- MySQL 8.0 SQL优化黑科技,面试官都不一定知道!
-
前言提到SQL优化,大多数人想到的还是那些经典套路:建索引、避免全表扫描、优化JOIN顺序…这些确实是基础,但如果你还停留在MySQL5.7时代的优化思维,那就out了。MySQL8.0已经发布好...
- 如何在 MySQL 中使用 JSON 数据(mysql的json函数与实例)
-
在MySQL中学习“NoSQL”MySQL从5.7版本开始就支持JSON格式的数据类型,该数据类型支持JSON文档的自动验证和优化存储和访问。尽管JSON数据最好存储在MongoDB等...
- MySQL中JSON的存储原理(mysql中json字段操作)
-
前言:表中有json字段后,非索引查询性能变得非常糟糕起因是我有一张表,里面有json字段后,而当mysql表中有200w数据的时候,走非索引查询性能变得非常糟糕需要3到5s。因此对mysql的jso...
- mysql 之json字段详解(多层复杂检索)
-
MySQL5.7.8开始支持JSON数据类型。MySQL8.0版本中增加了对JSON类型的索引支持。示例表CREATETABLE`users`(`id`intNOTNULLAU...
- VMware vCenter Server 8.0U3b 发布下载,新增功能概览
-
VMwarevCenterServer8.0U3b发布下载,新增功能概览ServerManagementSoftware|vCenter请访问原文链接:https://sysin.or...
- Spring Boot 3.x 新特性详解:从基础到高级实战
-
1.SpringBoot3.x简介与核心特性1.1SpringBoot3.x新特性概览SpringBoot3.x是建立在SpringFramework6.0基础上的重大版...
- 如何设计Agent的记忆系统(agent记忆方法)
-
最近看了一张画Agent记忆分类的图我觉得分类分的还可以,但是太浅了,于是就着它的逻辑,仔细得写了一下在不同的记忆层,该如何设计和选型先从流程,作用,实力和持续时间的这4个维度来解释一下这几种记忆:1...
- Spring Boot整合MyBatis全面指南:从基础到高级应用(全网最全)
-
一、基础概念与配置1.1SpringBoot与MyBatis简介技术描述优点SpringBoot简化Spring应用开发的框架,提供自动配置、快速启动等特性快速开发、内嵌服务器、自动配置、无需X...
- 5大主流方案对比:MySQL千亿级数据线上平滑扩容实战
-
一、扩容方案剖析1、扩容问题在项目初期,我们部署了三个数据库A、B、C,此时数据库的规模可以满足我们的业务需求。为了将数据做到平均分配,我们在Service服务层使用uid%3进行取模分片,从而将数据...
- PostgreSQL 技术内幕(五)Greenplum-Interconnect模块
-
Greenplum是在开源PostgreSQL的基础上,采用MPP架构的关系型分布式数据库。Greenplum被业界认为是最快最具性价比的数据库,具有强大的大规模数据分析任务处理能力。Greenplu...
- 在实际操作过程中如何避免出现SQL注入漏洞
-
一前言本文将针对开发过程中依旧经常出现的SQL编码缺陷,讲解其背后原理及形成原因。并以几个常见漏洞存在形式,提醒技术同学注意相关问题。最后会根据原理,提供解决或缓解方案。二SQL注入漏洞的原理、形...
- 运维从头到尾安装日志服务器,看这一篇就够了
-
一、rsyslog部署1.1)rsyslog介绍Linux的日志记录了用户在系统上一切操作,看日志去分析系统的状态是运维人员必须掌握的基本功。rsyslog日志服务器的优势:1、日志统一,集中式管理...
- 一周热门
-
-
Python实现人事自动打卡,再也不会被批评
-
Psutil + Flask + Pyecharts + Bootstrap 开发动态可视化系统监控
-
【验证码逆向专栏】vaptcha 手势验证码逆向分析
-
一个解决支持HTML/CSS/JS网页转PDF(高质量)的终极解决方案
-
再见Swagger UI 国人开源了一款超好用的 API 文档生成框架,真香
-
网页转成pdf文件的经验分享 网页转成pdf文件的经验分享怎么弄
-
C++ std::vector 简介
-
系统C盘清理:微信PC端文件清理,扩大C盘可用空间步骤
-
10款高性能NAS丨双十一必看,轻松搞定虚拟机、Docker、软路由
-
python使用fitz模块提取pdf中的图片
-
- 最近发表
-
- MySQL合集-mysql5.7及mysql8的一些特性
- MySQL 双表架构在房产中介房源管理中的深度实践
- MySQL 5.7 JSON 数据类型使用总结
- MySQL 8.0 SQL优化黑科技,面试官都不一定知道!
- 如何在 MySQL 中使用 JSON 数据(mysql的json函数与实例)
- MySQL中JSON的存储原理(mysql中json字段操作)
- mysql 之json字段详解(多层复杂检索)
- VMware vCenter Server 8.0U3b 发布下载,新增功能概览
- Spring Boot 3.x 新特性详解:从基础到高级实战
- 如何设计Agent的记忆系统(agent记忆方法)
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- table.render (33)
- uniapp textarea (33)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)