提高WPF程序性能的几条建议

这篇博客将介绍一些提高WPF程序的建议(水平有限,如果建议有误,请指正。)

1. 加快WPF程序的启动速度:

(1).减少需要显示的元素数量,去除不需要或者冗余的XAML元素代码.

(2).使用UI虚拟化,只显示当前需要显示的元素.

(3).不要把不要显示的自定义控件隐藏在主界面中,虽然它们不会显示出来,但是程序启动时还是会去计算自定义控件所需的空间和位置.

2. 耗时操作放在放在非UI线程上处理,保持UI的顺畅。处理完成后如果需要在UI上展示,调用Dispatcher.BeginInoke()方法。更多内容参考WPF QuickStart系列之线程模型(Thread Model);

3. 关于Data Binding,根据实际情况对Binding指定不同的Mode,性能OneWay优于TwoWay。另外修正掉系统中Binding错误,可以在Visual Studio的输出日志中查找System.Windows.Data Error;

4. Resources: 系统资源,通常情况下我们会把样式资源都统一到App.xaml中,这是很好的,便于资源的管理。不过尽量把多次重复用到的资源放到App.xaml中。例如某些页面的资源只会在当前页面中使用到,那么可以把资源定义在当前页面; 如非必要,不要使用DynaicResource,使用StaticResource即可;

5. 对Item类型控件重写时,使用VirtualizingStackPanel作为ItemPanel,这样列表资源可以只渲染当前需要的内容。不过如果设置CanContextScrol="True"会阻止虚拟化,另外使用VirtualizingStackPanel时,可以设置VirtualizingStackPanel.VirtualizationMode="Recycling", 这样已经显示过的列表不会被重复创建和释放掉。

6. 尽量少的使用Animation,尤其在程序启动时,Animation渲染时会占用一些CPU资源。

大概就这些。另外遇到性能问题时,可以使用一些工具来分析,VS 2015的性能分析工具就很不错,可以看到可视化树的元素和内存占用情况。

感谢您的阅读。

时间: 2024-08-06 03:42:53

提高WPF程序性能的几条建议的相关文章

WPF程序性能

WPF程序性能由很多因素造成,以下是简单地总结: 元素: 1.  减少需要显示的元素数量:去除不需要或者冗余的XAML元素代码. 通过移出不必要的元素,合并layout panels,简化templates来减少可视化树的层次.这可以保证第内存使用,而改变渲染性能. 2.  UI虚拟化:只显示当前需要显示的元素. 3.  不要把不要显示的自定义控件隐藏在主界面中:虽然它们不会显示出来,但是程序启动时还是会去计算自定义控件所需的空间和位置. 4.  VirtualizingStackPanel:对

给php程序员的40条建议 优化你的php代码(一)【转载】

给php程序员的40条建议 优化你的php代码,这些经验是资深php程序员多年的积累结果,经验之谈,对php开发者有很好的指导意义!搜集如下,可以时常翻出来看看. 1.echo 比 print 快. 2.尽量避免使用__get,__set,__autoload. 3.$row[‘id’]的效率是$row[id]的7倍. 4.尽量采用大量的PHP内置函数. 5.str_replace函数比preg_replace函数快,但strtr函数的效率是str_replace函数的四倍. 6.如果一个方法可

优化SpriteKit游戏性能的15条建议

本文翻译自 15 tips to optimize your SpriteKit game SpriteKit是一个简单快速的二维游戏框架,由苹果自己的媒体库支持,可以直接访问GPU. 但是随着游戏的编写,可能会发现帧率开始下降,而且对于iPad Pro这样拥有120Hz刷新率显示屏的设备,需要努力将每一帧更新时间控制在8毫秒之内. 如果遇到帧率低.动画不稳定或类似的性能问题,可以通过一下15个优化方法来识别和解决问题,而且有少量代码示意. 使用纹理图集时要谨慎 纹理地图集将多个单独的资源放置在

每天一个JavaScript实例-使用缓存计算(memoization)来提高应用程序性能

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>每天一个JavaScript实例-使用缓存计算(memoization)来提高应用程序性能</title> <script> window.onload = functio

写好程序注释的十三条建议(转)

写好程序注释的十三条建议 1. Comment each level(每个级别的注释有统一的风格) 注释每一个代码块,并且在各个级别的代码块上,要使用统一的注释方法.例如: 对于类,应包含简单的描述.作者以及最近的更改日期 对于方法,应包含目的的描述.功能.参数以及返回值 使用统一的注释规则对于一个团队是非常重要的.当然,更加推荐使用注释的约定和工具(例如,C#的XML或Java的Javadoc),它们会是注释变得更加容易. 2. Use paragraph comments(对段落注释) 将代

如何提升你的能力?给年轻程序员的几条建议

收藏自腾讯开发平台:http://gad.qq.com/article/detail/7151319 一转眼工作已有8年,前两天公司一位初入职场的同事希望我给一些建议与经验.我觉得这个话题很有价值,这里以个人的想法与经历写成此文,希望给年轻的开发者们一些启发. 我工作过的公司有4家,NVIDIA, Google, Slide和Glow.其中两家是知名的大公司,Slide我是D轮过后加入的,那时约150人.Glow则是从它第一天创立,一直走到现在.个人的工作也从Developer,Tech Lea

[转]如何提升你的能力?给年轻程序员的几条建议

转自 http://tech.glowing.com/cn/advices-to-junior-developers/ 一转眼工作已有8年,前两天公司一位初入职场的同事希望我给一些建议与经验.我觉得这个话题很有价值,这里以个人的想法与经历写成此文,希望给年轻的开发者们一些启发. 我工作过的公司有4家,NVIDIA, Google, Slide和Glow.其中两家是知名的大公司,Slide我是D轮过后加入的,那时约150人.Glow则是从它第一天创立,一直走到现在.个人的工作也从Developer

[译]在Linux上的提高MySQL/MariaDB安全性的12条建议

MySQL 是世界上最流行的开源数据库系统,而MariaDB(MySQL的一个分支)是世界上发展最快的开源数据库系统.安装MySQL服务器之后,它的默认配置是不安全的,保护它是一般数据库管理中的基本任务之一. 这将有助于加强和提升整体Linux服务器安全性,因为攻击者总是扫描系统任何部分的漏洞,而数据库过去一直是关键的目标.一个常见的例子是暴力破解MySQL数据库的root密码. 在本指南中,将讲解在 Linux 很有用的 MySQL / MariaDB 安全性最佳实践. MySQL 安全性安装

[好文推荐] 给年轻程序员的8条建议

看到一篇写的很好的职业生涯建议,想想真的是这些道理. 翻译如下: 如同儿歌 "Ooh La La" 所唱的一样,我多希望年轻时就懂得现在才领悟的那些道理呀.那时候,我心里只有代码,才不会去想想自己的职业人生,也不会去主动维持良好的朋友关系.要是有人指点一二,那能少走多少弯路啊! 1.保持联系方式 我刚毕业时一门心思都扑在计算机上,如果谁将我和心爱的电脑隔离我甚至会很反感.好吧,这样说可能夸张了一点. 尽管那时候就认识很多行内知名的专家,也参加各种交流会议认识很多值得做朋友的人, 但很可