刚刚起步看了两个月Flutter,感受和以前那些跨平台框架略有不一样,我认为已经到跨平台时代的3.0(随便说说哈)。 如今Flutter是谷歌主推的一个东西,感受仍是有点期待。下面是一个Flutter的Demo和本身作的一个基本功能差很少的iOS原生Demo作一个性能对比。前端
下文使用,从内存使用率、CPU使用率、FPS和包体积方面去作对比。注意:图片分辨率都是 1000 * 1000的量级。git
固然iOS和Flutter Demo从一些UI和设计风格上略有不一样。可是基本在关键点上面已经作到基本一致。github
上图所示,使用一开始比较经典的对比,有突刺的是滑动下载和加载图片的时候最高在115%CPU使用率。在1分钟到1分30秒区间中是滚动在已经下载好的图片,平均在18%左右的使用率。和Flutter 对比静止和滚动时候其实都是iOS原生好点。编程
平均 | 最高 | 静止 |
---|---|---|
55 | 113 | 38 |
18 | 115 | 0 |
原生略胜。网络
测试了6分钟,其中从1分钟到3分钟不断下拉不断下载图片时间,内存最高使用率到263Mib。框架
这个回合,若是不额外处理的话,Flutter胜出。布局
这个表现良好基本在58以上,不过是由于Flutter每一秒都会刷新界面的缘故吧~~因此我不动貌似都会刷新,而且是在FPS为58以上。GPU使用率最高会利用到68%,其余都保持在30%左右。这么厉害的内存泄漏是由于使用了图片框架形成的能够忽略,不是Dart或者Flutter原本的问题。性能
iOS原生滚动的时候,这是使用SDWebImage处理结果大约都在57fps以上。GPU使用率比Flutter低,还须要优化,不过还有一个问题,Flutter静止图像的时候还会使用GPU,而原生在静止时候,就不会使用GPU了。学习
这方面原生略微胜出。测试
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也是让新学习的同窗很快地上手。