本帖最后由 aloha20200628 于 2024-10-30 15:21 编辑
根据45楼提供的实况数据样本data.txt和1.txt,用34楼的新算法重写了如下代码,先用 jscript 把 1.txt(共有10512组匹配数,94612个字符)分成了总共12行的临时文件 0.1,其中每行至多 900 组匹配数不超过8K字符量(尽量趋近 findstr 命令行参数长度极限),再用以下代码跑一遍,其结果虽与24楼代码的运行结果完全相同,但提速极为显著,用时不足2秒,而24楼代码用时约2分钟...
- @set @x=1 /* &@echo off
- type "1.txt"|cscript /nologo /e:jscript "%~f0">0.1
- for /f "delims=" %%a in (0.1) do (
- findstr /lv "%%a" data.txt>0.0
- move /y 0.0 data.txt
- )>nul 2>nul
- del/q "0.1" &pause&exit/b */
- a=WSH.stdin.readall().split(' ');
- for (n=0,l=a.length; n<l; n+=900)
- WSH.echo(a.slice(n,n+900).join(' '));
- WSH.quit();
复制代码
|