佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 830|回复: 8

Winform小小的改变,速度提升了一半~

[复制链接]
发表于 25-10-2017 11:03 AM | 显示全部楼层 |阅读模式
本帖最后由 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


回复

使用道具 举报


ADVERTISEMENT

发表于 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 | 显示全部楼层
Coder99 发表于 25-10-2017 01:17 PM
stopwatch.start是放在InitializeComponent()之后,stopwatch.stop其实2个测试都放在form.shown那边,之前放的code改了。

vb6还有在用啊,都是一些老系统。。

恩.謝謝分享,有機會用到時會試試
知道vb6還有人用,不過我本身都好久沒用了.沒機會.

回复

使用道具 举报

发表于 26-10-2017 10:13 AM | 显示全部楼层
不知道適不適用在asp.net的web application咧?

我的gridview有很多data要load...


回复

使用道具 举报

 楼主| 发表于 26-10-2017 12:25 PM | 显示全部楼层
yan13 发表于 25-10-2017 08:02 PM
恩.謝謝分享,有機會用到時會試試
知道vb6還有人用,不過我本身都好久沒用了.沒機會.

好的,到时记得分享,希望有更多可以提升速度的方法。。
回复

使用道具 举报

Follow Us
 楼主| 发表于 26-10-2017 12:49 PM | 显示全部楼层
Jason929 发表于 26-10-2017 10:13 AM
不知道適不適用在asp.net的web application咧?

我的gridview有很多data要load...

这方法只适用在winform application。
Web application的话,我想大多数人都会用3rd party component,
如devexpress, telerik来增加用户体验,不过这也会影响了速度,有好有坏。
还有我发现在load DataTable的时候可以的话不要使用DataAdapter,
直接用dtX.Load(cmdX.ExecuteReader());,会提高速度。
这些在winform也是一样。

我也是在学习摸索当中,大家有更好的见解,不妨提出来分享。


回复

使用道具 举报

发表于 25-12-2017 11:11 PM | 显示全部楼层
Jason929 发表于 26-10-2017 10:13 AM
不知道適不適用在asp.net的web application咧?

我的gridview有很多data要load...

可以稍微解释一下所谓的很多 data 是多少吗?
rows ? MB ? query 需要多少时间?把资料从 query 放到 html 需要多少时间?

根据不同需要而修改,或者改变做法有时候会影响执行效率。





回复

使用道具 举报


ADVERTISEMENT

发表于 4-4-2018 06:57 AM | 显示全部楼层
如果在form shown 添加 BackgroundWorker 来读取上百个的datagridview data, 是否会比form load 来的快?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 25-4-2024 08:11 AM , Processed in 0.064749 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表