在多个平台和浏览器上进行测试
如果你在为多平台 (e.g. Mac and Windows) 或多浏览器 (e.g. Internet Explorer, FireFox, and Safari)进行程序设计, 记住一定要在这些平台一进行一一测试. 每个平台及浏览器的对于silverlight的表现都会有不同. 特别的, 当你的程序使用了 transparent embedded plug-in backgrounds或你的程序使用了大量的JavaScript你更应该进行彻底的测试.
在进行程序开发的时候将EnableFrameRateCounter = true 设置好
渲染的性能表现和主机上的设置及内容的复杂性有关系 . 建议你将 "settings.EnableFrameRateCounter = true" 设置好,这样在开发过程中将在
It is faster (better performance) to change property values by using Silverlight built-in animations than creating your own per-frame animations using APIs in JavaScript.
用动画来动态控制Text Size 是要占用很多系统资源的. 这是因为当 Silverlight 渲染任何text时, Silverlight 使用 "hinting" 来平滑文字图形. 如果你动态的来控制 text size (比如 Transform or FontSize), 那么程序必须不断的来
当你必须使用 Windowless 属性的时候再使用. 它将产生性能开销同时也可能会使动画的播放不流畅. 如果你只是简单的想将一个对象隐藏, 那么请使用 Visibility 属性而不要使用 Opacity. 一个设置 Opacity 为 0 的对象仍然将会在以后的使用中进行渲染,虽然你看不见它. 设置 Visibility 为 Collapsed 为避免这种情况. 如题,silverlight已经对多核心进行了优化. 当你的application转到 full screen模式时, 从object tree中隐藏或断开那些不需要对象将是有益的.你可以通过设置 Visibility 属必为Collapsed来达到这一点. 避免直接设置
当你使用 Path object时, 请不要设置 Width 和 Height. 设置 Width 和 Height将引起额外的拉伸效果,这将产生性能开销 . 你应该直接使用座标来设置它的形状和位置. 当使用 Downloader object, 在 Completed 事件触发后, 解除 Downloader 的所有事件,然后请设置Downloader 为null. 当JavaScript运行的时候, Plug-In 就不再进行渲染. 一般的,进行一些小的比较在event handlers 中简单调用就能完成的任务,这不属于讨论的范围, 然而, 如果你的程序需要在 JavaScript 纯种中调用一些开销比较大的过程,那么就建议你把这个过程分解成一个个小部分,这样在这些过程产生的间隙中,silverlight还可以有时间进行渲染以此来保持正常的帧率 . --------------------------------------------------------------------------------------------------------------------------- 在silverlight3中,硬件加速这个特性是由自己来决定的。如果你不想启动硬件加速器,那么你就看不到它的效果。
width="100%" height="100%"> <param name="enableGPUAcceleration" value="true" /> <param name="source" value="ClientBin/SilverlightApplication18.xap" /> </object> 还有另外一个参数: enableCacheVisualization 用法: 你可以通过调节它的on/off来查看硬件优化是否正在被引用。你会发现。没有应用优化的区域是有色彩的(红色),然而,正在应用优化的区域会显示正常的颜色。 例如,这里有个非常小的例子 我已经设置了参数enableCacheVisualization为true。而且我还显示了一个没有从硬件加速器中受益的MediaElement。你可以看到它是红色的而且enableCacheVisualization 已经被启动。
CacheMode="BitmapCache" Margin="10" Source="/bear.wmv" Stretch="Fill"/> 这时候,效果如图: 显示了一个没有高亮红色(指示加速器正在被运行)的视频。在我自己的机器上查看,这是视频非常漂亮。 注意:在用一个更加复杂的视频时,我发现CPU的使用率大约在50%到80%,设置更多。造成这种结果的因素有很多。所以需要特别注意这一点。 到现在为止,就我所知,视频加速器只能影响到MediaElement。它并不能影响到你用video(如VideoBrush )绘制的屏幕。 尽量在程序中少使用Transparent Background
Using Silverlight Animations is Faster than Creating your own Per-Frame Animation
用动画来动态控制Text Size 是要付出很多性能代价的
Windowless = "True" 是有性能开销的
在你可以使用Visibility的时候,请不要选择 Opacity
Silverlight 使用了 Multi-Core(多核心)来进行渲染和媒体播放
当在 Full Screen Mode时, 隐藏那些不需要的Objects
不要使用 Width/Height来控制 MediaElement的大小
不要给 Path Objects设置 Width/Height
当一个Downloader 完成时, 要将其关联事件解除,并设置为Null
当JavaScript运行的时候, Plug-In 就不再进行渲染
你如何来启动它呢?有一个新的参数enableGPUAcceleration,如下: <object data="data:application/x-silverlight-2," type="application/x-silverlight-2"
在Silverlight3中,UIElement有一个公共属性CacheMode,它的类型为CacheMode。据我所知,CacheMode只有BitmapCache值。如果我更改我定义的MediaElement,将它的CacheMode设置为BitmapCache,如下: