你的代码,第一次运行时为 0.03秒,其他时间为 0秒,我的代码第一就是 0 秒。
数据量太小,重复100次测速,
我测试的结果是,你的代码 约0.6秒,我的代码 约 0.05秒,10倍的速度差异。
不过,你的代码我没看懂,主要不明白 scripting.dictionary 的用法。你的速度也主要慢在 引用 scripting.dictionary 上面。
另外,遍类二个数组查找的办法,我没去测试,感觉会比字符串直接查找要慢。
程序代码:
t = Timer
Dim i As Long, j As Long
Dim aa() As String, bb As String
'打开对比数据
Open "D:\VBUser\vb--txt对比\bbb.txt" For Input As #1
'将txt文件内容赋值给数组bb,bb为整个文件内容,不分行
bb = StrConv(InputB(LOF(1), 1), vbUnicode) '将文件号为1的文件的全部字符转换成国际标准化组织 (ISO) 字符标准后传送给aa
Close #1
bb = vbCrLf & bb & vbCrLf '前后各加一个回车换行符,为后面直接查找创造条件
'打开对比数据
Open "D:\VBUser\vb--txt对比\aaa.txt" For Input As #1
'将txt文件内容赋值给数组aa,aa的元素为txt的一行
aa = Split(StrConv(InputB(LOF(1), 1), vbUnicode), vbCrLf) '将文件号为1的文件的全部字符转换成国际标准化组织 (ISO) 字符标准后传送给aa
Close #1
List1.Clear '清列表
For i = 0 To UBound(aa)
If InStr(1, bb, vbCrLf & aa(i) & vbCrLfb) = 0 Then 'aa行前后加了回车换行符后在bb里直接查找。找不到则添加
List1.AddItem aa(i)
End If
Next i
MsgBox "用时 " & Format(Timer - t, "0.00") & "秒"
[此贴子已经被作者于2023-2-4 12:50编辑过]