ahjkcfout7
Знающий
- Сообщения
- 26
- Репутация
- 6
Доброго времени суток. Имеется файл логов брандмауэра в котором около 1млн строк. Из файла необходимо получить ряд айпи адресов и портов. При выполнение кода, программа обрабатывает первые 10000 строк примерно за минуту, однако последующая 10я тысяча увеличивает время обработки и тд. Каким образом уменьшить время обработки файла? Я привожу код программы и часть файла логов https://www.sendspace.com/file/k9vapc
Код:
#include <File.au3>
#include <array.au3>
#include <String.au3>
#include <File.au3>
$sFilePath="c:\netlog.log"
Dim $arr[1]
Dim $arr1[1]
$file=FileOpen($sFilePath,0)
$file_ans=FileOpen("c:\ans.txt",1)
;~_FileReadToArray($sFilePath, $arr1)
;~ _ArrayDisplay($arr1)
;~ $serchstring=
$finish=_FileCountLines($sFilePath)
ConsoleWrite($finish&@CR)
$i=0
;~ Dim $sercharr=[":6881",":6883",":6881","224.0.0.252:5355","239.255.255.250:1900","239.255.255.250:1900","192.168.1.1:7"]
;~ For $i=1 To $finish
While True
$i+=1
;~ ConsoleWrite($i&@CR)
$workstring=FileReadLine($file,$i)
If Not StringInStr($workstring,"new packet connection: UDP/192.168.1.50:")=0 Then
If StringInStr($workstring,"239.255.255.250:1900")=0 Then
If StringInStr($workstring,"192.168.1.1:7")=0 Then
If StringInStr($workstring,"224.0.0.252:5355")=0 Then
If StringInStr($workstring,":6881")=0 And StringInStr($workstring,":6882")=0 And StringInStr($workstring,":6883")=0 Then
$workstring=_StringBetween($workstring, 'new packet connection: UDP/', '<n/a:0>')
$workstring=_ArrayToString($workstring)
FileWriteLine($file_ans,$workstring)
EndIf
EndIf
EndIf
EndIf
EndIf
;~ Next
WEnd