请教高手: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就根本不适合干这些事?
...全文
92 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
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

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧