Flash中使用位图的性能要高于矢量图,究竟有多大区别呢?数据有最好的说服力,开始测试:
一、机器配置
二、测试过程
测试程序控制红色小球在舞台中不停匀速移动,通过改变小球数量控制实际帧率在24帧/秒。
Fla默认帧率设置为25帧/秒,比较主流的游戏帧率,24帧可以认为已经达到处理瓶颈。
增减小球:
上(↑):增加10个小球,按住Shift键为100个
下(↓):删除10个小球,按住Shift键为100个
考虑到鼠标事件对影响性能,禁止了小球的鼠标事件
下面开始测试:
1、矢量图
2、使用“缓存为位图”选项
3、位图无导出类
4、位图有导出类(我管这叫“纯位图”)
三、结果分析
以下是收集到的测试数据,手边没有收集CPU的工具,用的任务管理器,但误差不大
另外不同CPU在最终元件数量上可能有较大区别,整体比较应该差不多
从统计中可以看出Flash在不同图形式上的处理差异很大:
- Flash的矢量图渲染性能真的很差,不到纯位图的10%。有意思的是CPU使用没有限制有多少用多少,因为有其他程序在跑无法达到100%,此时的机器使用量已经在95%以上;
- “缓存为位图”选项,在性能提升上非常明显示,应该可以满足大部份情况下的性能要求,遗憾的是内存增加不少,这里没有收集内存了,有兴趣的可以跑起来观察下;
- 没有导出类的位图作为动画元素时,几乎不能带来性能提升,这个问题很严重,你有没有偷懒忘了给位图设置导出类呢?如果只是单一背景这个并不明显,有兴趣也可以试试;
- 有导出类的位图性能没得说了,稍有点遗憾的是swf文件会变大;
- 位图渲染时,CPU使用上限有明显的限制——仅能使用单核的比例。
测试程序下载:https://files.cnblogs.com/samen168/%E7%9F%A2%E9%87%8F%E5%9B%BE%E4%B8%8E%E4%BD%8D%E5%9B%BE.rar