首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > VFP >

22MB的TXT大约77万行,需要统计字符串在其中的出现次数…好慢好慢!解决办法

2012-03-14 
22MB的TXT大约77万行,需要统计字符串在其中的出现次数……好慢好慢!每次导出的Log.txt数据有22MB左右。Log.db

22MB的TXT大约77万行,需要统计字符串在其中的出现次数……好慢好慢!
每次导出的Log.txt数据有22MB左右。

Log.dbf一共有一万多条记录,结构如下:
cIP (C) 15
nOccu (N) 4

希望得到每一条cIP记录在TXT当中出现的次数,在VFP中用这几行命令:
cTxtFile = FileToStr("Log.txt")
use Log.dbf
replace all nOccu with occu(trim(cIP), cTxtFile)

简直慢……到……天荒地老……地老天荒!

不知是不是occu的效率问题?按理儿,22MB的字符串,相对于2GB的内存,Core 2 Duo CPU的机器,不存在内存方面的瓶颈,可为什么会慢到“小时级”(注:不是“毫秒级”、“秒级”、“分钟级”)的地步呢?

求教:有没有什么替代的、效率可提升十倍、百倍的方法?
哈哈,贪心了。实在是由于区区22MB的TXT,没理由慢到如此程度的!

(抱歉,我好像没什么分)


[解决办法]
你这样的算法肯定慢,相当于每个IP都要扫描整个文本一次,而在文本中查找字符串又不能rushmore优化,肯定慢。试试这样:
在文本中扫描(若有规律也可先读入表中再循环),对每个IP,然后在DBF中找出该IP,计数加1。这样先按IP地址索引,就能有rushmore优化了,查找会很快的。

热点排行