Flutter和iOS原生性能对比测试

开篇

刚刚起步看了两个月Flutter,感受和以前那些跨平台框架略有不一样,我认为已经到跨平台时代的3.0(随便说说哈)。 如今Flutter是谷歌主推的一个东西,感受仍是有点期待。下面是一个Flutter的Demo和本身作的一个基本功能差很少的iOS原生Demo作一个性能对比。前端

正文

下文使用,从内存使用率、CPU使用率、FPS和包体积方面去作对比。注意:图片分辨率都是 1000 * 1000的量级。git

Demo页面

Flutter Demo页面

iOS原生Demo页面

固然iOS和Flutter Demo从一些UI和设计风格上略有不一样。可是基本在关键点上面已经作到基本一致。github

CPU使用率-Flutter vs iOS原生

Flutter

上图所示,测试5分钟双图片列表滑动3分钟以前是一直下拉滑动加载图片列表。3分钟以后是静止等图片显示完。 滚动时候的尖刺是由于网络下载时候cpu使用率最高达113%,平均达55%左右。由于用到了Stateful的Widget因此会有不断刷新界面的操做因此cpu会在多图状况下cpu使用率平均38%左右。

iOS原生

上图所示,使用一开始比较经典的对比,有突刺的是滑动下载和加载图片的时候最高在115%CPU使用率。在1分钟到1分30秒区间中是滚动在已经下载好的图片,平均在18%左右的使用率。和Flutter 对比静止和滚动时候其实都是iOS原生好点。编程

结果

平均 最高 静止
55 113 38
18 115 0

原生略胜。网络

内存使用率-Flutter vs iOS原生

Flutter

测试了6分钟,其中从1分钟到3分钟不断下拉不断下载图片时间,内存最高使用率到263Mib。框架

iOS原生

使用SDWebImage框架以后,而且设置最大使用内存以后原生保持在 400Mib左右。

这个回合,若是不额外处理的话,Flutter胜出。布局

内存使用率-Flutter vs iOS原生

Flutter

这个表现良好基本在58以上,不过是由于Flutter每一秒都会刷新界面的缘故吧~~因此我不动貌似都会刷新,而且是在FPS为58以上。GPU使用率最高会利用到68%,其余都保持在30%左右。这么厉害的内存泄漏是由于使用了图片框架形成的能够忽略,不是Dart或者Flutter原本的问题。性能

iOS原生

iOS原生滚动的时候,这是使用SDWebImage处理结果大约都在57fps以上。GPU使用率比Flutter低,还须要优化,不过还有一个问题,Flutter静止图像的时候还会使用GPU,而原生在静止时候,就不会使用GPU了。学习

这方面原生略微胜出。测试

包体积-Flutter vs iOS原生

iOS原生 Flutter
213KB 11.4MB

Flutter没有优化的时候,比原生大10M左右,这个是由于Flutter.ipa里面App.framework和Flutter.framework包比较大,因此这个回合是原生胜。

Flutte包体大小优化能够参考闲鱼的:mp.weixin.qq.com/s/IIoaY2uw6…

可是这个包体大小已经没有什么空间能够优化了,由于逻辑比较少,因此基本作不到很大的优化。

总结

Flutter其实性能和原生不会相差十分远,可是也有缺陷,好比不断使用GPU(在Stateful控件中),并且编程风格和部分控件风格也和iOS相差比较远。还有一些生命周期方面的方法也相对少。可是Flutter有接近前端的布局语法和相对简单的Api也是让新学习的同窗很快地上手。

Demo

github.com/KoonChaoSo/…

相关文章
相关标签/搜索