C#性能优化-多个TabPage之间切换慢

--------------------------扯下咸蛋-------------------------------

新入职了一家公司,主要做急诊HIS的业务。招聘时说是进来做架构师(其实自身能力也不够),结果进来之后做项目维护。。。

今天差不多是入职大概4个月的样子,解决了一个性能问题,顺便记录一下。

-------------------------切入正题-------------------------------

大概是如下图这样的一个业务,点击Tab页进行切换,然后加载不用类型的数据。。。

Design代码简单介绍下:

外层是一个Panel,Panel里面是TabControl,TabControl里面是TabPage,TabPage里面放了一个DataGridView。

业务很简单,没啥好说的,代码也不复杂,只是其中有一段代码导致了性能问题,如下图红框部分:

C#性能优化-多个TabPage之间切换慢_第1张图片

--------------------代码不规范(比如方法名首字母要大写)不要学----------------------------

想法很好,多个TabPage共用一个DataGridView,切换TabPage后加载数据并绑定给DataGridView,

然后把DataGridView的Parent指定为切换后的TabPage(相当于把DataGridView从切换前的TabPage中移除,然后放入切换后的TabPage中),从而实现DataGridView的复用。

---------------------吐槽开始----------------------------------

然后很不幸。。。。。随便试了下加载大概80条数据的样子,TabPage切换时居然用了2.293秒(我取了3次的平均值)。

区区80条数据就花去了两秒多,这个体验相当糟糕。。。

我作为开发者,都不能忍受了,何况是实际的客户(想想急诊科的医护压力)???

---------------------开始装逼---------------------------------

为了广大的患者,为了减轻急诊医护的压力,我决定必须改善它

解决思路:

很简单------------>取消DataGridView动态在TabPage之间来回移动,把DataGridView放入外层Panel中,和TabControl同级。

然后动态设置DataGridView的Size,达到和Dock=DockStyle.Fill的效果。

然后就是激动人心的验证啦。。。。。

217.3毫秒

激动人心吧,比之前的2.293秒提高了10倍

--------------------------好了装逼结束,欢迎吐槽-----------------------------------

你可能感兴趣的:(C#,.NET,WinForm)