Foxtable(狐表)用户栏目专家坐堂 → 关于逻辑列的效率问题(6楼同学的办法比我的好)


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

主题:关于逻辑列的效率问题(6楼同学的办法比我的好)

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/12/15 14:15:00 [显示全部帖子]

这个总结好!!!  

 

补充一个如:

DataTables("表A").Select("[第二列] = " & dr1("第一列") & ","第二列")   这个排序也严重影响效率4倍以上···


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/12/15 19:15:00 [显示全部帖子]

好像只对Compute里面的表达式有效, 对如 find 、 select 里的表达式没有什么影响·····

 

Select(Filter,Sort) 这里的排序,会严重影响效率。。。

[此贴子已经被作者于2010-12-15 19:21:12编辑过]

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/12/15 19:32:00 [显示全部帖子]

http://www.foxtable.com/dispbbs.asp?boardid=2&Id=8837  中,狐爸你可以测试一下你4楼的代码 :

 

Dim t1 As Date = Date.Now
Dim dic As New Dictionary(of DataRow, DataRow)
Dim lst As New List(of Integer)
Dim drs As List(of DataRow)
Dim dr1 As DataRow
For Each dr1 In DataTables("表A").DataRows
    drs = DataTables("表A").Select("[第二列] = " & dr1("第一列"),"_identify" )

' 注意:红字部分是加上的,绝不影响代码执行结果····效率差了20倍~
    For Each dr2 As DataRow In drs
        If lst.Contains(dr2("_Identify"))= False Then
            lst.add(dr2("_Identify"))
            dic.Add(dr1, dr2)
            Exit For
        End If
    Next
Next
For Each dr As DataRow In dic.keys
    dr1 = dic(dr)
    dr("第八列") = dr1("_Identify")
    dr("第九列") = dr1("第一列")
    dr("第十列") = dr1("第二列")
Next
Output.Show("计算结束, 耗时: " & (Date.Now - t1).TotalSeconds & "秒")

[此贴子已经被作者于2010-12-15 19:32:56编辑过]

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/12/15 20:11:00 [显示全部帖子]

以下是引用狐狸爸爸在2010-12-15 19:43:00的发言:
呵呵,排序需要时间啊,有影响是正常的。

这就跟打勾需要时间啊,也是正常的~  呵呵。  

 

我想表达的意思是:在不影响代码执行结果的同时,可先放弃这些影响效率的因素(或借道执行),等代码执行完后再来补充····  。


 回到顶部