
一个8.79M的小说查找一次重复章节用时149秒..

Private Sub cmdFindLine_Click()
On Error GoTo err
If Dir(cdTxt.FileName) = "" Or cdTxt.FileName = "" Then Exit Sub
Dim i&, j&, k&, fcf%, xTmp$, yTmp$, zTmp$
lstOver.Clear
zTmp = Time
For i = 1 To UBound(readBack) Step 5 '以每次连取三行的方式全局对比
If i + 5 > UBound(readBack) Then Exit For '判断是否到结尾
If readBack(i) = "" Then GoTo Fj
xTmp = readBack(i) + vbCrLf + readBack(i + 1) + vbCrLf + readBack(i + 2)
DoEvents
txtShow = "进度:" & Str(i) & "/" & Str(UBound(readBack)) + vbTab + "用时" + Str(DateDiff("s", zTmp, Time)) + " 秒."
For j = i + 5 To UBound(readBack)
If j + 5 > UBound(readBack) Then Exit For '判断是否到结尾
yTmp = readBack(j) + vbCrLf + readBack(j + 1) + vbCrLf + readBack(j + 2)
If xTmp = yTmp And i <> j Then
fcf = 0
For k = 0 To lstOver.ListCount - 1
If Str(i) + "||" + readBack(i) = lstOver.List(k) Then fcf = 1
Next
If fcf = 0 Then
lstOver.AddItem Str(i) + "-" + readBack(i)
lstOver.AddItem Str(j) + "-" + readBack(j)
End If
End If
Next
Fj:
Next
Call ShowChar("查找完成!", labMoveChar, lblVer)
Exit Sub
err:
MsgBox err.Description & cmdFindLine.Caption
err.Clear
End Sub
用的2层for,5行5行校正,还有别的方法吗?