этот код занимает около 30 минут и интенсивное использование процессора, в чем проблема
Do
strLine = objReader.ReadLine()
If strLine Is Nothing Then
Exit Do
End If
'check valid proxy
m = Regex.Match(strLine.Trim, strProxyParttern)
strMatch = m.Value.Trim
If String.IsNullOrEmpty(strMatch) = True OrElse _
strMatch.Contains("..") = True Then
Continue Do
End If
' create proxy
With tmpProxy
.IP = strMatch.Substring(0, strMatch.IndexOf(":"))
.Port = CInt(strMatch.Substring(strMatch.IndexOf(":") + 1))
.Status = "new"
End With
' check
If lstProxys.Contains(tmpProxy) = True Then
Continue Do
End If
lstProxys.Add(tmpProxy)
Debug.Print(lstProxys.Count.ToString)
Loop Until strLine Is Nothing
If lstProxys.Count < 1 Then
Exit Sub
End If
медлительность из сравнения или чтения файла или из регулярного выражения?
EDIT
профилирование кода следующим образом
Dim myTimer As New System.Diagnostics.Stopwatch()
Dim t1 As Integer = 0
Dim t2 As Integer = 0
Dim t3 As Integer = 0
'read the file line by line, collecting valid proxy
Do
'Read a line fromn the file
myTimer.Reset()
myTimer.Start()
strLine = objReader.ReadLine()
If strLine Is Nothing Then
Exit Do
End If
myTimer.Stop()
t1 = myTimer.Elapsed.Milliseconds
'check valid proxy
myTimer.Reset()
myTimer.Start()
m = Regex.Match(strLine.Trim, strProxyParttern)
strMatch = m.Value.Trim
If String.IsNullOrEmpty(strMatch) = True OrElse _
strMatch.Contains("..") = True Then
Continue Do
End If
myTimer.Stop()
t2 = myTimer.Elapsed.Milliseconds
' create proxy
myTimer.Reset()
myTimer.Start()
tmpProxy.IP = strMatch.Substring(0, strMatch.IndexOf(":"))
tmpProxy.Port = CInt(strMatch.Substring(strMatch.IndexOf(":") + 1))
tmpProxy.Status = "new"
' check
If lstProxys.Contains(tmpProxy) = True Then
Continue Do
End If
lstProxys.Add(tmpProxy)
myTimer.Stop()
t2 = myTimer.Elapsed.Milliseconds
Debug.Print(String.Format("Read={0}, Match={1}, Add={2}", t1, t2, t3))
Loop Until strLine Is Nothing
дал эти результаты
Read=0, Match=0, Add=1
Read=0, Match=0, Add=1
Read=0, Match=0, Add=2
...
Read=0, Match=0, Add=9
Read=0, Match=0, Add=9
Read=0, Match=0, Add=10
...
...
Read=0, Match=0, Add=39
Read=0, Match=0, Add=39
Read=0, Match=0, Add=40
etc
похоже, что код в порядке, за исключением добавления в список