Foxtable(狐表)用户栏目专家坐堂 → [求助]如何写集合索引


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

主题:[求助]如何写集合索引

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


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
[求助]如何写集合索引  发帖心情 Post By:2015/11/18 18:35:00 [只看该作者]

大致要求,
Dim lst as new list(of AA) 'AA 是一个类,包含 属性 Name,A1等

如果我想在集合lst中实现一个contains的方法,判断是否包含 Name为 Jack 的AA类
我原来是这么设计的
function contains(byval strName as string) as boolean 
dim bln as boolean = false 
for each a as AA in lst
if a.name = strName then 
bln = true 
exit for 
end if
next
return bln 
end function 

调用的时候
if lst.contains("Jack") then 
end if 

如果通过 for each 循环 判断,在巨量的循环下(上千万甚至上亿),效率非常低,是否高效办法实现,或者新的设计思路?


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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2015/11/19 8:36:00 [只看该作者]

使用字典http://www.foxtable.com/help/topics/1945.htm

 

但是如果是有一个上千万甚至上亿的集合,本身就是不合理的设计。可以考虑拆分或者直接从数据库中查询。


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


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2015/11/19 9:32:00 [只看该作者]

以下是引用Hyphen在2015/11/19 8:36:00的发言:

使用字典http://www.foxtable.com/help/topics/1945.htm

 

但是如果是有一个上千万甚至上亿的集合,本身就是不合理的设计。可以考虑拆分或者直接从数据库中查询。


已经解决了,减少了2个重要的集合查询,改成先赋值一个变量保存,效率提升了1000倍。

不是查询数据库,是解析字节流,1M就100W了,不过不是全部循环,目前就循环了10%不到。字典大概超过10W存储后效率下降非常多,经过两次循环优化,现在读取速度已经从几十秒降到0.01秒了


 回到顶部