关于winform性能优化的问题

punny123 2012-11-06 10:09:23
最近工作主要负责程序的性能优化,我们的系统业务比较复杂,之前做的时候没有很好的考虑性能这个关键问题,后来业务的增加导致了系统反应超级慢,我用dotTrace对几个主要功能模块进行分析后发现就一个主界面加载过程差不多就用了10s多,后来发现程序中出现很多内存泄露和GDI泄露,就想着用GDI泄露检测工具进行定位分析,但是找了2款工具发现都不好用,定位很不明确,如果自己手动去定位的话由于程序太大了,会很耗时间,所以想请教各位大神能给我分享下一些关于性能优化上的经验?或者分享一些比较好用的GDI泄露检测工具~~
...全文
510 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
a472544436 2015-06-03
  • 打赏
  • 举报
回复
我觉得从程序本身出发,你用检测工具检测不到代码逻辑,同样的事件不同的逻辑往往是造成程序速度迟缓的根本,内存泄漏你要知道imagelist对象也会造成,不一定是第三方控件,直接指定图片位置的时候加载过程就容易造成。GDI在使用printDecument的时候也会造成内存泄露,你看预览的页数跟缓存有关系,C# Winform对缓存的处理机制我一直不看好,你把数据存在缓存中经常错误百出,莫名其妙的错误,稍微大点的数据尽量不要使用数组,这是忠告。很多工作你也未必能检测出来,比如数据库处理工作,他的逻辑绝对是对的,但是有时候逻辑不应该在winform上做,而是在SQL Server上写存储过程,比如生成单号、切割BOM,有利于节约时间,这叫查询时机。Linq优化解决链表问题,但是他能不能真的比在Server上完成好呢?现实中测试一下速度就知道了。
  • 打赏
  • 举报
回复
引用 9 楼 punny123 的回复:
引用 7 楼 silverradiance 的回复:引用 5 楼 punny123 的回复: 引用 4 楼 silverradiance 的回复:用了很多第三方的控件? winform打开比较慢一般都是数据操作的增删改查造成的,你们怎么会因为GDI产生这样的问题。 你的内存泄露和GDI泄露指的是,能举个例子么目前检测出来的GDI泄露主要体现在画图的时候DC对象,Br……
这个我还没有发现什么好的办法,就是依靠自己的经验来重新查看自己的source,能优化的就进行优化,另外很多情况下程序运行一段时候后就会占用内存越来越多,这些问题都是能够通过优化来解决的
punny123 2012-11-27
  • 打赏
  • 举报
回复
引用 7 楼 silverradiance 的回复:
引用 5 楼 punny123 的回复: 引用 4 楼 silverradiance 的回复:用了很多第三方的控件? winform打开比较慢一般都是数据操作的增删改查造成的,你们怎么会因为GDI产生这样的问题。 你的内存泄露和GDI泄露指的是,能举个例子么目前检测出来的GDI泄露主要体现在画图的时候DC对象,Brush对象和Font对象没有没及时回收~系统的很多界面基本上都是封装了.net……
请教下用source和review怎么优化??能举个例子吗?我对绘图这方面不是很懂~~
sinodzh 2012-11-07
  • 打赏
  • 举报
回复
引用类型的回收。值类型的回收。最好可能占资源的类实现dispose接口。
  • 打赏
  • 举报
回复
引用 5 楼 punny123 的回复:
引用 4 楼 silverradiance 的回复:用了很多第三方的控件? winform打开比较慢一般都是数据操作的增删改查造成的,你们怎么会因为GDI产生这样的问题。 你的内存泄露和GDI泄露指的是,能举个例子么目前检测出来的GDI泄露主要体现在画图的时候DC对象,Brush对象和Font对象没有没及时回收~系统的很多界面基本上都是封装了.net的原来控件,这种算……
啊,原来是绘图的对象都没有释放,自己封装控件的问题。这样的话得靠source 的review来优化了。没有用过什么好的工具,工具再怎么也只是辅助,很得靠自己呀
punny123 2012-11-07
  • 打赏
  • 举报
回复
没高手帮忙啊~~~
  • 打赏
  • 举报
回复
用了很多第三方的控件? winform打开比较慢一般都是数据操作的增删改查造成的,你们怎么会因为GDI产生这样的问题。 你的内存泄露和GDI泄露指的是,能举个例子么
punny123 2012-11-06
  • 打赏
  • 举报
回复
引用 1 楼 wddw1986 的回复:
可以很不负责的说,如果不进行代码Review,你们的项目早晚崩溃掉。
现在就是要对代码进行Review,但是第一步得要知道那部分代码最耗时,需要第一时间去修改啊~~
SocketUpEx 2012-11-06
  • 打赏
  • 举报
回复
我前段时间 也对主服务端进行优化 把内存从5G降到2G 原来开三台服务器都会轮流断线 现在一台服务器都能7*24小时服务
cheng2005 2012-11-06
  • 打赏
  • 举报
回复
可以很不负责的说,如果不进行代码Review,你们的项目早晚崩溃掉。
punny123 2012-11-06
  • 打赏
  • 举报
回复
引用 4 楼 silverradiance 的回复:
用了很多第三方的控件? winform打开比较慢一般都是数据操作的增删改查造成的,你们怎么会因为GDI产生这样的问题。 你的内存泄露和GDI泄露指的是,能举个例子么
目前检测出来的GDI泄露主要体现在画图的时候DC对象,Brush对象和Font对象没有没及时回收~系统的很多界面基本上都是封装了.net的原来控件,这种算是第三方控件吗?

110,524

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧