Leute, das muß doch schneller gehen ![]()
Und was ist geeigneter für große Datenmengen als... SQLite ![]()
Grob geschätzt 60% Zeitersparnis. ( und ausserdem sortiert nach Häufigkeit
)
#include <File.au3>
#include <SQLite.au3>
#include <SQLite.dll.au3>
Func _sql_count_ip()
Local $file = @ScriptDir & '\test_ip.txt', $arIP
_FileReadToArray($file, $arIP)
Local $tableStr = "CREATE TABLE tblTEST ('ip');"
Local $insertStr = ''
For $i = 1 To UBound($arIP) -1
$insertStr &= "INSERT INTO tblTEST VALUES ('" & $arIP[$i] & "');"
Next
_SQLite_Startup ()
$hSQL = _SQLite_Open ()
_SQLite_Exec ( $hSQL, $tableStr & $insertStr )
Local $hQuery, $aRow, $result = '', $fh
_SQlite_Query ( $hSQL, "SELECT ip,COUNT(ip) FROM tblTEST GROUP BY ip ORDER BY COUNT(ip) DESC;", $hQuery )
While _SQLite_FetchData ($hQuery, $aRow) = $SQLITE_OK
$result &= $aRow[0] & @TAB & $aRow[1] & @CRLF
;~ ConsoleWrite($aRow[0] & @TAB & $aRow[1] & @CRLF)
WEnd
$fh = FileOpen(@ScriptDir & '\test_ip_out.txt', 1)
FileWrite($fh, $result)
FileClose($fh)
_SQLite_Exec ( $hSQL, "DROP TABLE tblTEST;" )
_SQLite_Close ()
_SQLite_Shutdown ()
EndFunc
Edit: Was allerdings wieder 2/3 ausbremst, ist die Initialisierung der SQLite Dll ![]()