Foxtable(狐表)用户栏目专家坐堂 → GetValues


  共有2654人关注过本帖树形打印复制链接

主题:GetValues

帅哥哟,离线,有人找我吗?
hbhb
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5055 积分:13047 威望:0 精华:0 注册:2014/5/15 21:34:00
GetValues  发帖心情 Post By:2021/7/15 13:51:00 [显示全部帖子]

大师:劳驾测试GetValues的效率,回到解放前了,慢的像乌龟爬!
1万行的遍列获得,要几佰秒,用select只要0.5秒!

 回到顶部
帅哥哟,离线,有人找我吗?
hbhb
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5055 积分:13047 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2021/7/15 14:12:00 [显示全部帖子]

这能叫升级,能叫修复?举世没有,哪有这种道理,项目都要修改。

 回到顶部
帅哥哟,离线,有人找我吗?
hbhb
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5055 积分:13047 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2021/7/15 14:36:00 [显示全部帖子]

如果以下代码改为GetValues方法,2万行测试要297秒,下面的代码只要0.6秒。


Dim st As Date = Date.Now


Dim Dic As new Dictionary(of DataRow,String)


For Each dr As DataRow In DataTables("dtpzzb").DataRows

    Dim jh As new List(of DataRow)

    Dim jh1 As new List(of String)

    If dr("pzzb9") <> 0  Then

        jh = DataTables("dtpzzb").Select(" pzzb8 <> 0 and pzzb142 = '" & dr("pzzb142") & "'")

        For Each tr As DataRow In jh

            If jh1.Contains(tr("pzzb12")) = False  Then

                jh1.Add(tr("pzzb12"))

            End If

        Next

        Dim sz() As String

        sz = jh1.ToArray

        Dim zfc As String

        zfc = String.Join(";",sz)

        dic.Add(dr,zfc)

    ElseIf dr("pzzb8") <> 0  Then

        jh = DataTables("dtpzzb").Select(" pzzb9 <> 0 and pzzb142 = '" & dr("pzzb142") & "'")

        For Each tr As DataRow In jh

            If jh1.Contains(tr("pzzb12")) = False  Then

                jh1.Add(tr("pzzb12"))

            End If

        Next

        Dim sz() As String

        sz = jh1.ToArray

        Dim zfc As String

        zfc = String.Join(";",sz)

        dic.Add(dr,zfc)

                

    End If

    

Next



MessageBox.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒")




 回到顶部
帅哥哟,离线,有人找我吗?
hbhb
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5055 积分:13047 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2021/7/15 14:48:00 [显示全部帖子]

Dim st As Date = Date.Now


Dim Dic As new Dictionary(of DataRow,String)


For Each dr As DataRow In DataTables("dtpzzb").DataRows

    

    Dim jh1 As new List(of String)

    If dr("pzzb9") <> 0  Then

jh1 =  DataTables("dtpzzb").GetValues("pzzb12"," pzzb8 <> 0 and pzzb142 = '" & dr("pzzb142") & "'")

                Dim sz() As String

        sz = jh1.ToArray

        Dim zfc As String

        zfc = String.Join(";",sz)

        dic.Add(dr,zfc)

    ElseIf dr("pzzb8") <> 0  Then

        jh1 =  DataTables("dtpzzb").GetValues("pzzb12"," pzzb9 <> 0 and pzzb142 = '" & dr("pzzb142") & "'")

               Dim sz() As String

        sz = jh1.ToArray

        Dim zfc As String

        zfc = String.Join(";",sz)

        dic.Add(dr,zfc)

                

    End If

    

Next



MessageBox.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒")



 回到顶部
帅哥哟,离线,有人找我吗?
hbhb
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5055 积分:13047 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2021/7/15 15:09:00 [显示全部帖子]

测试无数遍了,真没意思,所有的代码都要更改!老版测试没有问题,充分证明,每次升级根本没有进行有效的测试!
另外友情提醒:
项目代码测试数据,最好要用中等数据20000条记录以上,否则好玩了。搞死你没商量!

 回到顶部
帅哥哟,离线,有人找我吗?
hbhb
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5055 积分:13047 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2021/7/15 15:51:00 [显示全部帖子]

不可能,多少行数据测试的?刚测试用了320秒。


 回到顶部
帅哥哟,离线,有人找我吗?
hbhb
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5055 积分:13047 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2021/7/15 18:35:00 [显示全部帖子]

刚才有测试了以下,出鬼了,又如您所说的一样了,像这种要求,如何优化代码?

 回到顶部
帅哥哟,离线,有人找我吗?
hbhb
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5055 积分:13047 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2021/7/15 19:07:00 [显示全部帖子]

之前我测试了多次,而且还显示了每个集合的数量,只要0.几秒,怎么现在就不行了?

 回到顶部
帅哥哟,离线,有人找我吗?
hbhb
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5055 积分:13047 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2021/7/15 19:10:00 [显示全部帖子]

10000000000000000000000000000000000000000000000000000000%有问题?

 回到顶部
帅哥哟,离线,有人找我吗?
hbhb
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5055 积分:13047 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2021/7/15 20:29:00 [显示全部帖子]

有史以来最好玩的最大的bug!!!!!!!!!!!
无意中发现的,劳驾首先在窗口中执行如下代码,只要0.几秒,然后再执行上面的代码,同样也只要0.几秒。
如果两段代码放在一起,只要1秒。
Dim Dic As new Dictionary(of DataRow, Integer)
Dim v As Double
For Each
dr As DataRow In DataTables("表A").DataRows
    v = DataTables("表A").Compute("Count(第二列 )", "第二列 = " & dr("第一列"))
    dic
.Add(dr, v
)
Next




 回到顶部
总数 15 1 2 下一页