请教高手:VB中检索大文件时如何降低计算机的CPU占用率?

xqchang 2003-04-02 09:53:14
我需要对大量的文本文件进行关键词检索,其中有些文件比较大,有好几兆字节,需要检索的关键词有100个左右,我用VB编的程序,用instr函数来进行字符串的匹配,程序基本结构如下:

'假如有1000个文件
'假如有100个关键词,存在数组strKeys()中
Dim i,j as integer
for i=1 to 1000
........
'读文件到字符串变量strText中
........
for j=1 to 100
if instr(1,strText,strKeys(j),1)<>0 then
'找到关键词
Exit For
else
'没找到,继续
end if
next j
next i

我知道这样的程序不好,系统的CPU占用率一直比较高,尤其是遇上一些比较大的文件时,CPU的占用率会达到100%,在Windows上已经不能进行其它操作了,是不是VB就根本不适合干这些事?
...全文
51 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xqchang 2003-04-14
寻求更好的注意!
回复
xqchang 2003-04-13
问一下:我听人说过用哈希(HASH)算法进行关键词检索的,不知谁有这方面的例子或方案?我看了一下MD5的算法,128位地址,地址空间就是个天文数字,不知道用这中方法怎么实现关键词的检索?
回复
xqchang 2003-04-13
可以考虑,我试试看。
回复
renjunjun 2003-04-12
不如把文件一次性的都放进数据库里,用字符串进行检索,比较优秀!
回复
James0001 2003-04-12
降低线程和进程的优先级
回复
xqchang 2003-04-12
其实我已经用了多线程技术,而且每搜索一个文件就让线程sleep几百毫秒,但效果还是不行,主要还是在instr函数,他的功能不错,但太费CPU,我机器的内存都加到1G,用的还是SICS盘阵列,还是经常象死机了一样。
回复
shortppsy 2003-04-12
用with
回复
thirdapple 2003-04-12
其实应该提高占用率,这样的话,也可以快点结束啊,呵呵。实在不行,用硬办法,Sleep函数强行中断程序0.003~0.004秒的样子,比DoEvents要明显得多。
回复
xqchang 2003-04-10
效果不明显,主要是instr函数太费CPU了,尤其是遇到大文件时。
回复
xqchang 2003-04-02
pls help me.......................
回复
Sean918 2003-04-02
在 循环中加上 doevents 语句试试

就是这样:

Dim i,j as integer
for i=1 to 1000
........
'读文件到字符串变量strText中
........
for j=1 to 100
if instr(1,strText,strKeys(j),1)<>0 then
'找到关键词
Exit For
else
'没找到,继续
end if
    Doevents  
next j
Doevents  
next i
回复
相关推荐
发帖
VB基础类
创建于2007-09-28

7521

社区成员

VB 基础类
申请成为版主
帖子事件
创建了帖子
2003-04-02 09:53
社区公告
暂无公告