查看: 830|回复: 8
|
Winform小小的改变,速度提升了一半~
[复制链接]
|
|
本帖最后由 Coder99 于 25-10-2017 01:02 PM 编辑
从vb6时代开始,如果需要在gridview display data,一般人的做法都是把data loading的部分写在form load那边,最近我把以前vb.net的program改去c#时做了点测试,发现把data loading的部分写在form shown那边,方而可以把整体form的运行速度提升了一半。
我不确定这做法是否正统,不过目前为止没发现什么问题,方而整体软件速度提升了。
private void frm_Load(object sender, EventArgs e)
{
try
{
FormInitialize();
ResetForm();
RefreshGrid();
...
}
catch (Exception ex)
{
...
}
}
private void frm_Shown(object sender, EventArgs e)
{
stopwatch.Stop();
Console.WriteLine("Time elapsed: {0}", stopwatch.Elapsed);
}
Load method:
Time elapsed: 00:00:01.2135672
Time elapsed: 00:00:01.1482459
Time elapsed: 00:00:01.0872998
该去
private void frm_Shown(object sender, EventArgs e)
{
try
{
FormInitialize();
ResetForm();
RefreshGrid();
...
stopwatch.Stop();
Console.WriteLine("Time elapsed: {0}", stopwatch.Elapsed);
}
catch (Exception ex)
{
...
}
}
Shown method:
Time elapsed: 00:00:00.5160884
Time elapsed: 00:00:00.4552257
Time elapsed: 00:00:00.4598649
|
|
|
|
|
|
|
|
发表于 25-10-2017 12:08 PM
|
显示全部楼层
謝謝分享.
請問可以試試看把stopwatch.start 放在 form.load, stopwatch.stop 放在 form.shown,就是說以同樣的條件,計時的起點和終點一樣,但是一個datagridview loading 在form.load, 一個在form.shown,然後再測試嗎?
覺得都沒問題,沒錯的話,2個都是只triggle一次.
好久沒看過vb6了不懂這老朋友過得怎樣
|
|
|
|
|
|
|
|
楼主 |
发表于 25-10-2017 01:17 PM
|
显示全部楼层
yan13 发表于 25-10-2017 12:08 PM
謝謝分享.
請問可以試試看把stopwatch.start 放在 form.load, stopwatch.stop 放在 form.shown,就是說以同樣的條件,計時的起點和終點一樣,但是一個datagridview loading 在form.load, 一個在form.shown,然 ...
stopwatch.start是放在InitializeComponent()之后,stopwatch.stop其实2个测试都放在form.shown那边,之前放的code改了。
vb6还有在用啊,都是一些老系统。。
|
|
|
|
|
|
|
|
发表于 25-10-2017 08:02 PM
|
显示全部楼层
恩.謝謝分享,有機會用到時會試試
知道vb6還有人用,不過我本身都好久沒用了.沒機會.
|
|
|
|
|
|
|
|
发表于 26-10-2017 10:13 AM
|
显示全部楼层
不知道適不適用在asp.net的web application咧?
我的gridview有很多data要load...
|
|
|
|
|
|
|
|
楼主 |
发表于 26-10-2017 12:25 PM
|
显示全部楼层
好的,到时记得分享,希望有更多可以提升速度的方法。。
|
|
|
|
|
|
|
|
楼主 |
发表于 26-10-2017 12:49 PM
|
显示全部楼层
这方法只适用在winform application。
Web application的话,我想大多数人都会用3rd party component,
如devexpress, telerik来增加用户体验,不过这也会影响了速度,有好有坏。
还有我发现在load DataTable的时候可以的话不要使用DataAdapter,
直接用dtX.Load(cmdX.ExecuteReader());,会提高速度。
这些在winform也是一样。
我也是在学习摸索当中,大家有更好的见解,不妨提出来分享。
|
|
|
|
|
|
|
|
发表于 25-12-2017 11:11 PM
|
显示全部楼层
可以稍微解释一下所谓的很多 data 是多少吗?
rows ? MB ? query 需要多少时间?把资料从 query 放到 html 需要多少时间?
根据不同需要而修改,或者改变做法有时候会影响执行效率。
|
|
|
|
|
|
|
|
发表于 4-4-2018 06:57 AM
|
显示全部楼层
如果在form shown 添加 BackgroundWorker 来读取上百个的datagridview data, 是否会比form load 来的快? |
|
|
|
|
|
|
| |
本周最热论坛帖子
|