《本地语料高速检索:findstr.exe与grep.exe决战》

李亮1975重庆

语料库快乐军政委
喜讯预报】在较多情况下,findstr和grep有“100MB/秒”的检索高速!

测试平台】英特尔双核T6600的CPU,内存3GB,Windows XP SP2,硬盘300GB,.Net 2.0版,显卡是NVIDIA Quadro NVS 170M。

GREP版本】2.5.1版,Windows32位版,132KB的文件体积

测试数据】CLEC语料库的ST2.txt(1.26MB)经过多次合并而形成了970MB的大型TXT文件

测试方法】用dos命令向处于同一文件夹的grep.exe和findstr.exe发送参数,且重定向输出到另一个全新的txt文件,执行完毕则查看新生成的txt文件的创建时间和最后修改时间的秒数差别来计算出grep和findstr的各自的持续运行时间。

测试结果
搜索"the",grep用24秒,findstr用29秒,都产生了923MB的结果文件!
搜索“sons”,grep用6秒,findstr用6秒,都产生了88MB的结果文件!
搜索“unusual”,grep用6秒,findstr用4秒,都产生了461KB的结果文件!

内存占用】grep始终占1MB的物理内存,findstr立即飙升到900多MB的物理内存,可见,findstr是一次读取整个文件到内存再进行检索计算。

评测结论
(1)grep.exe在Windows平台上比findstr.exe要快一些,尤其是数百兆的语料且搜索词的命中率很高的情况下;
(2)grep.exe和findstr.exe在搜索词的命中率很低的情况下,检索速度比命中率高的情况要快得多!
(3)findstr对物理内存占用极高,语料越庞大,占用物理内存的量等于语料容量;
(4)findstr和grep检索低频词的速度基本上5秒每个GB,中频词要10秒每GB,而高频词要30秒每个GB;以中频词来计算,findstr和grep的速度是“100MB/秒”!

【备注】附件中的“st2mega.rar”是解压缩之后有977MB的测试用途的文本文件,只有rar格式有如此压缩率,而zip压缩只能变成300MB呢

http://www.docin.com/mydoc-61009282-1.html
语料检索的速成教程:DOS神威之FindStr
 

附件

  • st2mega.rar
    1 MB · 浏览: 37
  • grep.rar
    61.5 KB · 浏览: 13
Back
顶部