--------------------------扯下咸蛋-------------------------------
新入职了一家公司,主要做急诊HIS的业务。招聘时说是进来做架构师(其实自身能力也不够),结果进来之后做项目维护。。。
今天差不多是入职大概4个月的样子,解决了一个性能问题,顺便记录一下。
-------------------------切入正题-------------------------------
大概是如下图这样的一个业务,点击Tab页进行切换,然后加载不用类型的数据。。。
Design代码简单介绍下:
外层是一个Panel,Panel里面是TabControl,TabControl里面是TabPage,TabPage里面放了一个DataGridView。
业务很简单,没啥好说的,代码也不复杂,只是其中有一段代码导致了性能问题,如下图红框部分:
--------------------代码不规范(比如方法名首字母要大写)不要学----------------------------
想法很好,多个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倍
--------------------------好了装逼结束,欢迎吐槽-----------------------------------