以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助] contains 判断运算速度慢 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=130903) |
-- 作者:machle -- 发布时间:2019/2/11 13:08:00 -- [求助] contains 判断运算速度慢 数据量比较大,想计算每一个value2中的词在每一个value1句子中出现的总次数。运算的时候,点了以后就不动,程序死掉了。 然后我就在每个循环中增加了一个messagebox,想看看是否计算正确,这样每次就蹦出计算结果来,发现是对的。问题出在那条contains语句,我该怎么调试。 谢谢! For i = 0 To Tables("WordAndTimes").Rows.Count-1 ‘3万条数据’ sum(i) = 0 For j = 0 To Tables("JournalInformation").Rows.Count-1 “3万条数据” If Value1(j).Contains(Value2(i)) Then sum(i) = sum(i) +1 End If Next Tables("WordAndTimes").Rows(i)("文件频率") = sum(i)/Tables("JournalInformation").Rows.Count messagebox.show( Tables("WordAndTimes").Rows(i)("文件频率") ) Next |
-- 作者:有点甜 -- 发布时间:2019/2/11 14:53:00 --
请做一个具体的实例发上来测试,说明要做到的效果。
|
-- 作者:machle -- 发布时间:2019/2/12 22:08:00 -- 回复:(有点甜) 请做一个具体的实例发上来测... 3万多句话,将它们逐一分词,将它们总结出了3万个词,现在想看看这3万词中的每一个,分别在这3万多句话中的多少个句子里出现过。 |
-- 作者:machle -- 发布时间:2019/2/12 22:10:00 -- 回复:(有点甜) 请做一个具体的实例发上来测... 循环里这个contains 计算速度非常慢。 If Value1(j).Contains(Value2(i)) Then sum(i) = sum(i) +1 End If
|
-- 作者:有点蓝 -- 发布时间:2019/2/12 22:19:00 -- 包含的判断一向都不快,更何况在循环里。 这种建议直接使用SQL进行查询
|
-- 作者:有点甜 -- 发布时间:2019/2/13 9:51:00 --
3万*3万=9亿 次,能不慢吗?
做个具体例子发上来测试,看是否可以优化。 |