代码改变世界

WP7 App性能优化(13):检测应用程序性能(Ⅵ)

2011-01-01 23:41  MagicKing110  阅读(1541)  评论(0编辑  收藏  举报

逐帧回调示例

该示例演示了逐帧回调动画与storyboard驱动的动画的对比。

下载示例代码

运行此示例,将会看到一个带storyboard动画(运行在构图线程)的小蓝方块,和5个按钮:

  • Add-添加一个1/8屏幕大小、带逐帧回调动画的矩形
  • Dlt-删除最新添加的矩形
  • Redraw-P:System.Windows.Interop.Settings.EnableRedrawRegions调试标志开关切换
  • Cache-切换是否对应用矩形手工应用位图缓存。默认值为true。
  • Hide/Show-切换屏幕底部按钮的可见性的开关。

要测试此示例,请尝试如下操作:

  • 添加几个矩形直到蓝色方块和矩形开始卡屏。这是因为设置了手动缓存。因为手动缓存,方块的动画在排列线程执行,而矩形的动画在UI线程执行。两个线程都受到了逐帧绘制矩形的填充率的限制。
  • 切换Cache按钮关闭矩形的手动缓存。此时会看到方块的动画开始变得很平滑,但是矩形的动画更加卡屏。这是因为不应用缓存时,UI线程会为每一帧绘制矩形。其间,构图线程 不再处理矩形的纹理所以方块动画变平滑了。当矩形不缓存时,内存中不会保持任何的纹理。每次矩形位置更新时那些像素都会重绘。这些耗资源的操作都通过CPU在UI线程执行。因而,轻型的构图线程能够以60帧/秒的速度更新,即使CPU资源已经被矩形占用尽。
  • 继续测试Redraw和Cache按钮。注意重绘区域启用后,如果矩形缓存了,矩形将会出现闪烁。闪烁意味着对象正在被被逐帧重绘。注意这种情况下,方块不在闪烁因为它是被storyboard驱动的,会自动缓存。

Ff967560.939efa85-b67e-4386-853c-25af85fa5e9e(en-us,VS.92).png

转到:WP7 App性能优化(0):索引页

备注:WP7性能优化系列到此结束,(0)-(13),共计14篇。感谢大家的支持。