当前位置:首页 > 闲鱼技术 > 正文内容

流言终结者

xianyu3年前 (2021-03-14)闲鱼技术237

背景

论坛上很多小伙伴关心为什么闲鱼选择了Flutter而不选择其他跨端方案?站在质量的角度,高性能是一个很重的因素,我们使用Flutter重写了宝贝详情页之后,对比了Flutter和Native详情页的性能表现,结论是中高端机型上Flutter和Native不相上下,在低端机型上,Flutter会比Native更加的流畅,其实闲鱼团队在使用Flutter做详情页过程中,没有更多地关注性能优化,为了更快地上线,也是优先功能的实现,不过测试结果出来之后,却出乎意料地优于原先的Native的实现(具体的测试结果,属于敏感数据,要走披露流程,伤不起…)

微信号:pps688888
添加微信, 免费测试软件
复制微信号

但是这样很显然不能敷衍过去,仔细想了想,确实Flutter的定位并不是要替代Native,他只想做一个极致的跨端解决方案,所以还是要回到跨端解决方案的赛道,给您从性能角度比一比,谁才是更好的跨端开发方案?

参赛选手

[Flutter]

Flutter is Google’s mobile app SDK for crafting high-quality native interfaces on iOS and Android in record time. Flutter works with existing code, is used by developers and organizations around the world, and is free and open source.

[REACT NATIVE]

We’re working on a large-scale rearchitecture of React Native to make it more flexible and integrate better with native infrastructure in hybrid JavaScript/native apps.

鸣锣开赛

怎么比

怎么比较确实伤脑筋,自己也写了一个Flutter 和 一个RN的App,但是实在太丑陋,担心大家关注点都到我的烂代码上了,所以在Github上找到了一个跨端开发高手Car Guo,用Flutter和RN分别实现的一个实际可用的App,Car Guo谦虚表示其实也写的比较粗糙,但是在我看来这个是具备真实使用场景的App(Github客户端App,提供丰富的功能,旨在更好的日常管理和维护个人Github),还是有代表性的
[Flutter] https://github.com/CarGuo/GSYGithubAppFlutter
[REACT NATIVE] https://github.com/CarGuo/GSYGithubApp

场景

1、默认登录成功
2、“动态”页,点击搜索按钮,搜索关键字“Java”,正常速度浏览3页,等第4页加载完成后回退
3、点击“趋势”页Tab,浏览Feeds到页面底部,点击最底部的Item,进入Item后,浏览详情+浏览3页的动态后回退,到“我的”Tab页
4、查看“我的”Feeds到底部,点击右上角搜索按钮,搜索关键字“C”,浏览3页后,等第4页加载完成后场景结束

测试工具

  • iOS
  • 掌中测(iOS端):CPU,内存
  • Instruments:FPS
  • Android
  • 基于Adb的Shell脚本:CPU,内存,FPS

测试机型

  • iOS:iPhone 5c 9.0.1 / iPhone 6s 10.3.2
  • Android:Xiaomi 2s 5.0.2 / Sumsung S8 7.0

数据分析

iOS

iPhone 5c 9.0.1

image.png

iPhone 6s 10.3.2

image.png

测试结论

1、Flutter在低端和中端的iOS机型上,FPS的表现都优于RN
2、CPU的使用上Flutter在低端机上表现略差于RN,中端机型略优于RN
3、值得注意的是内存上的表现(上图红色箭头区域),Flutter在低端机型上的起始内存和RN几乎一致,在中端机型上会多30M左右的内存(分析为Dart VM的内存),可以想到这应该是Flutter针对低端和中端机型上内存策略是不一样的,可用内存少的机型,Dart VM的初始内存少,运行时进行分配(这样也可以理解为什么在低端机上带来了更多的CPU损耗),中端机器上预分配了更多的VM内存,这样在处理时会更加的游刃有余,减少CPU的介入,带来更流畅的体验.
可以看出,Flutter团队在针对不同机型上处理更加的细腻,目的就是为了带来稳定流畅的体验。

Android

Xiaomi 2s 5.0.2

image.png

Sumsung S8 7.0

image.png
  • 注: MFS – Max Frame Space: 指的是去掉buffer之后的两帧的时间差

测试结论

1、Flutter在高低端机的CPU上的表现都优于RN,尤其在低端的小米2s上有着更优的表现
2、Android端在原来FPS基础上增加了流畅度的指标,FPS和流畅度的表现Flutter优于RN(计算规则见附参考文章)
3、Android端的内存也是值得关注的一点,在小米2s上起始内存Flutter明显比RN多40M,RN在测试过程中内存飞涨,Flutter相比之下会更稳定,内存上RN侧的代码是需要调优的,同一套代码Flutter在Android和iOS上并没有很大的差异,但是RN的却要在单端调优,Flutter在这项比拼上又更胜一筹。
比较奇怪的是三星S8上Flutter和RN的初始内存是一致的,猜测是RN也Android高端机型上也会预分配一些内存,具体细节还需要更进一步的研究。

升旗仪式

看了之前的数据,做为裁判的我会把金牌颁给Flutter,在测试过程中的体验和数据上来看Flutter都优于RN,并且开发这个App的是一位Android的开发同学,Flutter和RN对于他来说都是全新的技术栈,Car Guo同学更倾向性地让大家得到一致性的使用体验,性能方面并没有投入太多的时间进行调优,由此看出Flutter在跨端开发上在同样投入的情况下,可以获得更佳的性能,更好的用户体验。

一些思考

拿到了这些数据,也感受到Flutter带来福利,那Flutter为什么可以做到这么流畅呢?Flutter是如何优化了渲染,Dart VM的Runtime是怎么玩的?请大家继续关注后续解密文章,感兴趣的同学欢迎加入闲鱼,成为跨端解决方案的领军者。

参考

  • Android FPS&流畅度: https://testerhome.com/topics/4775
  • Android 内存获取方式:
  • Android CPU 通过busybox 执行 top命令获取
  • iOS CPU获取方式:累计每个线程中的CPU利用率

[container addObject:cpuDO]

; } } } // for each thread

  • iOS 内存获取方式:测试过程中使用的是phys_footprint,是最准确的物理内存,很多开源软件用的是resident_size(这个值代表的是常驻内存,并不能很好地表现出真实内存变化,这可以另开文章细谈)

联系我们

如果对文本的内容有疑问或指正,欢迎告知我们。

闲鱼技术团队是一只短小精悍的工程技术团队。我们不仅关注于业务问题的有效解决,同时我们在推动打破技术栈分工限制(android/iOS/Html5/Server 编程模型和语言的统一)、计算机视觉技术在移动终端上的前沿实践工作。作为闲鱼技术团队的软件工程师,您有机会去展示您所有的才能和勇气,在整个产品的演进和用户问题解决中证明技术发展是改变生活方式的动力。

<

扫描二维码推送至手机访问。

版权声明:本文由中客网络发布,如需转载请注明出处。

本文链接:http://www.zzzmc.cc/270.html

分享给朋友:

相关文章

闲鱼曝光下降原因终于找到了!

闲鱼曝光下降原因终于找到了!

  【闲鱼流量暴增系统】闲鱼曝光下降原因终于找到了!      2020年08月10日   闲鱼排名   106 views   0   首先,我来介绍一下商品曝光度下降的原因。   【闲鱼流量暴增系统】在闲鱼上,卖同一商品的商家不止一家,闲鱼为了能够均匀分配流量,闲鱼官方会把曝光度分流,这样你就不能拿到高的曝光量。   那么如何拿到高曝光量呢?   你必须要从你的标题、闲鱼圈子、闲鱼商品维护等方面下手。优化标题,加入闲鱼鱼塘,每天擦脸和编辑自己的商品等操作都能提高你的商品曝光量,你一定要每天维护你的商品。   闲鱼流量下降的原因还有...

排名过低,你有过这种烦恼吗?

排名过低,你有过这种烦恼吗?

  排名过低,你有过这种烦恼吗?      2021年01月08日   闲鱼流量   52 views   0   用闲鱼卖东西的卖家相信都会有这种烦恼,那便是排名过低。排名过低会影响什么呢?其实排名过低便意味你的浏览量下降,很少有人能看到你的东西。你所上架的商品无人问津, 商品卖不出去,就没有收入。这对于许多人来说是非常痛苦的。那么为什么会排名过低呢?真正的原因在这儿。   关于排名过低的问题,其实总体上来说就是四个原因。   原因一:你的闲鱼权重下降。在闲鱼上,权重越高,你的浏览量也越高。如果你的权重不高的话,那么你的浏览量就会下降,你的排名...

闲鱼卖不出东西怎么办?总是出单难?

闲鱼卖不出东西怎么办?总是出单难?

  【闲鱼批量上架软件】近年来我国的电子商务发展真的是很快,自从有了网上购物,人们的生活变得更加便利,现在网上购物已经成为我们日常生活中非常重要的一部分,而我国也是网上购物最多的国家,我们对网购的需求很大,这就催生了很多电子商务平台的出现。   但是要说最成功的肯定是电子商务界的巨头---阿里巴巴,其名下的用户依然是超多,就闲鱼而言就有很高的流量。   但是玩的人多了,慢慢商品就也不好卖了,想要卖好商品还要要找一些可靠的方法,闲鱼里面也有很多的学问需要我们去学习。   【闲鱼批量上架软件】1、研究同行流量较高的商品。找出你所发布的宝贝类目中,做的比较好的10个同行,研究他们的...

闲鱼擦亮编辑的最佳时间!

闲鱼擦亮编辑的最佳时间!

  【闲鱼助手】闲鱼擦亮编辑的最佳时间!      2020年09月15日   闲鱼助手   79 views   0   【闲鱼浏览量】闲鱼的擦亮其实是一个下架上架的过程,擦亮之后能提高我们的排名,一天只能擦亮一次,所以说我们应该抓住每天的这一次机会。   什么时候是闲鱼擦亮的最佳时机:闲鱼擦亮的作用,一般人会认为擦亮只是为了提高曝光率,然后他们也任意点一批结束今天的任务,如果有合作伙伴或这样做,我建议你可以改变。很糟糕。为什么?擦亮的效果不仅是增加曝光量,而且对流量排名也有一定的影响,因此不能忽视。那么擦亮应该怎么做,首先你要了解清楚客户们的玩手机...

怎么按照产品类别发布商品避免违规?

怎么按照产品类别发布商品避免违规?

  【闲鱼流量暴增系统】怎么按照产品类别发布商品避免违规?      2020年08月18日   闲鱼排名   82 views   0   许多人在商品上架的时候不知道要选择什么样的类目,甚至还因为错误的选择频频出现违规情况,怎么才能选择正确的适合自己产品的类目那?   产品类别   在许多被罚上架的商品中,也有很大一部分是因为放错了类目而被下架处罚,那么知道了这个原因,我们就要注意,有很多小伙伴可能不知道虚拟产品应该放在哪各类目下面,放错了类目就会被闲鱼认定为违规,那么我们应该放在哪个类目下面呢,其实我们可以选择买椟还珠的方式,什么意思呢?也...

在闲鱼卖东西有保障吗,卖家怎么维护自己的权益?

在闲鱼卖东西有保障吗,卖家怎么维护自己的权益?

  【闲鱼批量上架软件】回答当然是肯定的,毋庸置疑,闲鱼作为阿里巴巴旗下的二手交易平台,安全性自然是没话说,第一,闲鱼和淘宝都是一个网络平台,有支付宝担保交易,第二,闲鱼是淘宝二手的一个说句话的二手交易市场,不仅仅支持各种同城以及线上的担【闲鱼批量上架软件】保交易,更安全。   但是我们在运营交易时也要注意甄别买家,首先买家分很多种,第一有可能是真实的买家,他想还价,拍下不付款给你还价,让你修改价格,这样的话,你如果感觉他有诚意,价钱也能够接受就可以修改,他会拍下并付款,第二,有可能是闲鱼里面的“托”,并不想真的买你的东西,只是为了刷单或者其他目的,一般会在你发布之后很快拍下,并不付款,...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。