以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  联网状态下代码效率极低的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=122163)

--  作者:andy-1024
--  发布时间:2018/7/20 1:47:00
--  联网状态下代码效率极低的问题

老师好,我遇到一个奇怪的问题,我发现下面的代码在网络通畅的时候效率极低,经常要等待十几秒时间,但是如果把WiFi关掉,处于断网状态下就会非常快,不到1秒就执行完了。于是我把代码分成7段输出耗时,观察了一下,并且跟联网时对比了一下,结果如下,单位为毫秒:

联网: 1=144, 2=0,3=5498, 4=603, 5=2280, 6=8685, 7=1814

断网: 1=153, 2=0, 3=6, 4=0, 5=1, 6=86, 7=67

可以看到,断网的时候比联网的时候效率高了不是一点点。

我这里用到的表都是本地服务器上的,现在测试软件,确切的说,本地服务器就在我现在用的电脑上,本地数据表也在我的电脑上,整个程序运行过程中即使处于联网状态也没有用到外部数据表和外部网络,但是效率竟然会差这么大。

尤其不可思议的是,第二段到第三段仅仅是在窗口中的表中新增一行,毫秒数竟然能达到5498,将近6秒钟时间,而这个过程根本就不用网络呀。

我仔细看了好几遍代码,都不知道问题出在哪里了,请老师指点一下。

 

代码如下(发代码提示错误,只能截屏了):

 


图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看

 


图片点击可在新窗口打开查看此主题相关图片如下:2.jpg
图片点击可在新窗口打开查看

其中“L_GoodsInfo”和“L_PriceInfo”都是本地服务器上的表。


--  作者:有点甜
--  发布时间:2018/7/20 8:48:00
--  

1、看看 http://www.foxtable.com/webhelp/scr/2730.htm

 

2、你表格的datarowadded是否写了什么事件代码?

 

3、你是不是有定时器?定时执行了什么代码?


--  作者:andy-1024
--  发布时间:2018/7/20 16:56:00
--  

1. 我关闭了,无效

2. 我的DataRowAdded, DataRowAdding里面都没有代码

3. 定时器执行代码,但与网络无关,无论开关都不影响时效。

 

但是我仔细分析后找出了问题所在,DataColChanged事件中有段代码位置不对,增加行的过程中和往单元格里写入数据的时候,会反复执行多次,造成耗时延长。

谢谢老师!


--  作者:有点甜
--  发布时间:2018/7/20 17:30:00
--  
以下是引用andy-1024在2018/7/20 16:56:00的发言:

 

但是我仔细分析后找出了问题所在,DataColChanged事件中有段代码位置不对,增加行的过程中和往单元格里写入数据的时候,会反复执行多次,造成耗时延长。

谢谢老师!

 

你可以暂停事件代码触发的,参考

 

http://www.foxtable.com/webhelp/scr/2218.htm