使用性能监测面板
概述
PAG贴纸现在支持两类导出方式,BMP预合成导出和矢量导出。BMP预合成导出方式能支持所有的AE特性,但是文件较大,通常应用在视频编辑中或对动效特效有特别要求的场合。矢量导出方式仅能支持部分AE特性,但是文件极小,通常应用在UI上或者需要内容可编辑的场合。
在性能方面,BMP预合成导出方式产生的PAG贴纸,渲染性能上增加了额外的图片或视频解码耗时,整体耗时相比矢量导出会更高一些,并且只跟BMP预合成导出的尺寸有关系。 矢量导出方式可以做到文件大小和性能都到非常优化的极限状态,但是跟设计师具体制作一个动效的方式有很大联系,需要设计师花费额外的工作量去调优。
PAGViewer上的Profiler性能检测面板可以很直观地帮助设计师进行性能调优。预览贴纸时按下键盘上的P键即可呼出该面板,再次按下关闭面板。
面板上各种信息的含义
FrameRate : 播放帧率,每秒刷新画面的次数。
Duration : 动效时长, 单位为 s(秒)、m(分钟)、h(小时) 。
Graphics : 贴纸播放时占用的显存大小,单位同上。
Videos : 贴纸内采用视频格式的「BMP预合成」的数量。
TagLevel : 贴纸内包含的最高的Tag等级。
Width : 贴纸设计宽度。
Height : 贴纸设计高度。
Layers : 贴纸内包含的图层总数量。
Render : 当前一帧的渲染耗时,单位微秒。
Render(AVG) : 当前面板图像内的平均渲染耗时,单位微秒。
Render(MAX) : 当前面板图像内的最大渲染耗时,单位微秒。
Image : 当前一帧的解码耗时,单位微秒。
Image(AVG) : 当前面板图像内的平均解码耗时,单位微秒。
Image(MAX) : 当前面板图像内的最大解码耗时,单位微秒。
Prensent : 当前一帧的上屏耗时,单位微秒。
Prensent(AVG) : 当前面板图像内的上屏耗时,单位微秒。
Prensent(MAX) : 当前面板图像内的上屏耗时,单位微秒。
波形图每个柱代表某一帧 Render+Image+Prensent 的总耗时,可以根据颜色区分占比。
如何解读利用这些信息
1.TagLevel 用于确认一个贴纸的版本兼容性,即在某个版本的客户端是否能正常播放。客户端 SDK 的 PAGFile.MaxSupportedTagLevel() 要大于等于这个贴纸的最高 TagLevel 才能正常播放此贴纸,否则需要升级 SDK。
2.包含位图的贴纸需要关注尺寸,因为放大可能模糊。全矢量贴纸因为可以无损缩放,不需要关心。目前在视频合成中使用的贴纸为了保证清晰度,若贴纸包含位图要求预合成的最短边必须为720像素。
3.Graphics 显存大小通常跟图层的数量关联较大也跟贴纸实际绘制时缩放的大小有关,所有内容静止只有矩阵变化的图层都会被缓存成纹理,来提搞绘制效率,这个值过高会导致程序显存耗尽而崩溃。
4.Layers 图层数量主要影响的是显存大小,以及绘制时长。Layer越多复杂度越高,绘制需要的计算量也越复杂。如果存在内容完全相同的图层,应该避免直接复制图层,而是将这些图层做成预合成,然后引用预合成的方式,这样图层数量会只计算一份。
5.Render 渲染耗时通常在是矢量导出的硬性指标,由于这些耗时在每台机器上具体数值都不相同,无法确定出固定值,但可以参考在iMac 27寸电脑上的耗时,建议控制在100微秒左右内。
6.Image 位图解码耗时通常在使用图片图层或者导出采用位图格式存储的BMP预合成时才会占用这个耗时。位图解码耗时基本可以认为只跟图片尺寸有关。