Silverlight 4中位图缓存的缺点是什么?

Ric*_*ier 2 silverlight graphics performance caching bitmap

通过利用Silverlight的位图缓存,我们能够解决高CPU使用率问题,如下所述:

我们将EnableGPUAcceleration参数添加到<object>标记.为了将CPU使用率降低到合理的水平,我们不得不将CacheMode ="BitmapCache"添加到整个应用程序的根可视网格中.所以我想知道在位图缓存上依赖这么多是不是有任何缺点.如果它总是有益的,我认为它将默认启用.

我发现这个类似的问题,AnthonyWJones给出了一个很好的答案:

所以一个缺点是它使用更多的视频RAM.我想这可能会使同时运行的其他图形密集型应用程序变得更糟.还有其他缺点吗?

如果显卡没有足够的视频RAM来缓存所有东西,我认为Silverlight会优雅地降级,并且只会使用更多的CPU周期来重新渲染UI.


谢谢你的帮助,
理查德

Ken*_*ith 5

在对位图缓存进行了大量实验后,我们最终在应用程序中将其关闭.当你想要使用GPU在一块没有变化的UI上执行变换时,它可以很好地工作 - 例如,如果你有一个你想要动画,压缩,旋转等的图片,但是位图缓存/ GPU加速(在其当前实现中)如果您继续更新您想要缓存/操作的UI部分内的可视树,则会大大减慢速度.如果你只是在静态位图上移动,那么缓存它并使用GPU来加速它是有意义的.但是很多时候,你可能会在你标记为缓存的UI部分的视觉树下某处调整碎片,如果发生了这种情况,你需要每帧更新GPU的缓存,

换句话说,是否有意义,为您打开它,或者不完全取决于在那里你打开它,和你的应用程序在做.因此,我强烈建议,如果您正在使用位图缓存,或者您遇到Silverlight UI的性能问题,那么(暂时)启用缓存可视化重绘区域.当你的应用程序打开时,你的应用程序看起来很时髦,但是当你看到你的用户界面正在做什么来咀嚼你所有的CPU时,它们是非常宝贵的.