Fireball89
Captain
- Registriert
- Aug. 2007
- Beiträge
- 3.498
Hallo,
ich brauche ein Programm was 2 txt-Dateien einliest, jede Zeile als Array-Element speichert und dann vergleicht. Anschliessend kommt wieder eine txt-Datei heraus mit den den Zeilen aus den beiden Dateien, allerdings ohne Doppelte.
Hier gehts mir nur um den Array-Vergleich.
Das Problem an der Sache ist, selbst wenn ich das ganze mit 4 Threads auf meinem Phenom II X4 955 laufen lasse (d.h. das programm 4 mal starten, 8 txt-Dateien werden verarbeitet), braucht man für das Zusammenführen von 2 Arrays mit je 80.000 fast 6 Stunden.
Kann man da noch was optimieren?
Falls nein, will ich gerne, dass AutoIT die Arrays an ein CUDA-Programm übergibt, ist das möglich? Ich denke meine GPU würde das schneller hinbekommen.
ich brauche ein Programm was 2 txt-Dateien einliest, jede Zeile als Array-Element speichert und dann vergleicht. Anschliessend kommt wieder eine txt-Datei heraus mit den den Zeilen aus den beiden Dateien, allerdings ohne Doppelte.
Hier gehts mir nur um den Array-Vergleich.
Code:
Func joinArrays($arr1, $arr2)
$i=0
$k=0
$doppelte=0
Local $arr [16777111]
ProgressOn("Programmstatus", "Fortschritt","", IniRead("config.ini", "Global", "winx", "600"), IniRead("config.ini", "Global", "winy", "400"),16)
While ($k<UBound($arr1))
ProgressSet( ($k/UBound($arr1)*100), "Teil 1 - Doppelte: "&$doppelte&" - Position: "&$k)
$vorhanden=False
$u=0
While ($u<UBound($arr2))
If $arr1[$k] = $arr2[$u] Then
$vorhanden=True
ExitLoop
EndIf
$u+=1
WEnd
If ($vorhanden=False) Then
$arr[$i] = $arr1[$k]
$i+=1
Else
$doppelte+=1
EndIf
$k+=1
WEnd
$u=0
While ($u < UBound($arr2))
ProgressSet( ($u/UBound($arr2)*100), "Teil 2 - Liste anfügen")
$arr[$i]=$arr2[$u]
$i+=1
$u+=1
WEnd
ReDim $arr[$i]
Return $arr
EndFunc
Das Problem an der Sache ist, selbst wenn ich das ganze mit 4 Threads auf meinem Phenom II X4 955 laufen lasse (d.h. das programm 4 mal starten, 8 txt-Dateien werden verarbeitet), braucht man für das Zusammenführen von 2 Arrays mit je 80.000 fast 6 Stunden.
Kann man da noch was optimieren?
Falls nein, will ich gerne, dass AutoIT die Arrays an ein CUDA-Programm übergibt, ist das möglich? Ich denke meine GPU würde das schneller hinbekommen.