Silverlight性能优化具体方法介绍
创始人
2024-06-19 01:11:14
0

对于开发人员来说,运用一款工具开进行开发程序的时候,肯定会想尽一切办法来使这款工具的运用效能达到一个更高的境地。那么对于Silverlight的使用也是一样。我们先来看看Silverlight性能优化的具体方法。#t#

Silverlight性能优化1)尽量使用轻量级的控件

这在WPF中表现得极为明显,让我记忆最为深刻的就是FormattedText、TextBlock和Label这3个控件,从左至右性能消耗越多,往往习惯了随便拖控的朋友刚接触WPF时一看到熟悉的Label就拖它一个出来,FormattedText就不说了,TextBlock拥有与Label几乎一样的功能,因此希望看过本文的朋友注意了,WPF开发中尽量选择轻量级的控件。而由于Silverlight是WPF的子集,所以它的控件几乎都是经过浓缩与优化的,因此只需特别注意布局控件的选择;Canvas是性能较好且易于使用的布局控件,本文强力推荐。

Silverlight性能优化2)在对象动画过程中不要碰触它的Opacity属性

举个最简单的例子,如果一个物体在做水平动画移动,此过程中你为它添加了一个鼠标悬停事件,事件内容为修改它的Opacity属性为半透明,然而当你运行程序后却会发现当你把鼠标停在正在移动的该物体上时,会导致该物体运动的短暂不平滑(类似跳帧),这就是因为直接修改元素的 Opacity 属性会迫使系统创建一个临时的 Surface,这个过程是需要消耗一定性能的,切记。

Silverlight性能优化3)使用CompositionTarget.Rendering 事件启动逐帧动画(循环)

实现动画的方式有多种,如果您需要实现高密度的基于画面刷新的动画,那么建议使用CompositionTarget.Rendering 事件。并且注意了下面才是关键,在Silverlight中您需要非常默契的限制好参数MaxFrameRate,它可以根据客户电脑配置及时时的性能消耗调节画面的刷新率,相当于您的动画机器保姆。我个人的建议,将MaxFrameRate设置在45-60这个段内,这样最接近您液晶显示器的刷新率(有人说将之设置为1000会使动画极其流畅;没错,您的目的是达到了,但是将导致您的CPU疯狂的运做,我想这不是您想要的结果吧),在繁忙时即不会过度消耗性能,又能让您得到清晰且流畅的视觉享受。

Silverlight性能优化4)尽量使用各种加速与缓存

在WPF中大家可以通过降低图片的质量以换取性能的提升;在Silverlight中可以启动EnableGPUAcceleration然后通过设置各Uelement对象的CacheMode="BitmapCache"来实现GPU加速支持(此方法目前存在于3.0版本中,并且倍受争议)。

WPF/Silverlight应用程序为了让用户得到较好的交互体验,均会使用大量的图形、媒体与动画,目前的个人电脑配置1G+内存都算低端了,因此大家不妨多考虑利用空间换时间,将这些资源尽量的缓存,每次调用时首先检索是否存在于缓存中,然后才考虑重新加载。这给频繁的资源素材切换提供了快速且可靠的通道,消耗的仅仅是闲置无用的一点点内存而已。

Silverlight性能优化5)适当的时候使用关联属性将给您带来意外的惊喜

绑定关联属性(DependencyObject)是***效率的事情,无论是WPF还是Silverlight;定义好带回调方法的关联属性,仅当关联属性被修改后才通知界面更新,这才是关联属性最有性能的使用方式。但是,如果您乱用或过度使用关联属性,将导致整体性能的大幅度降低,其实一些普通的对象属性是完全可以用CLR属性代替的,这即为从细节中抽离出性能原理。

Silverlight性能优化6)将后台工作者(BackgroundWorker)看做您的左膀右臂

BackgroundWorker是从Winform年代即存在的一个伟大控件,使用它配合界面的Dispatcher进行跨线程的后台异步委托是兼具性能与友好体验的处理方式。大家不妨在头疼大量数据处理的时候,将BackgroundWorker视为您的左膀右臂,您会发现过程原来是可以这么简单的。

目前暂时先写这6点建议吧,如果有不对或不妥处,还望大家指正。同时大家应该详细阅读本文开头呈现的两个msdn地址中关于WPF/Silverlight性能提升的提示,只要您都做到了,我相信任何产品都能通过您的手发挥出***的性能。
 

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...