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优化了,查找会很快的。