以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]如何写集合索引 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=77466) |
-- 作者:jspta -- 发布时间: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 -- 发布时间:2015/11/19 8:36:00 -- 使用字典http://www.foxtable.com/help/topics/1945.htm
但是如果是有一个上千万甚至上亿的集合,本身就是不合理的设计。可以考虑拆分或者直接从数据库中查询。 |
-- 作者:jspta -- 发布时间: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秒了 |