Hi
ich hab mal wieder ein problemlein wo ihr mir womöglich helfen könnt.
es geht darum, dass folgende funktion bei mehr als einem megabyte ziemlich ewig warten lässt.
Func ArrayCountS($array)
Dim $ary[2][2]
$ary[0][0] = 1
$ary[1][0] = $array[1]
$ary[1][1] = 1
$best = $array[1]
$cbest = 1
$dublic = 0
For $c = 2 To $array[0]
For $i = 1 To $ary[0][0]
If $ary[$i][0] = $array[$c] Then
$ary[$i][1] += 1
If $ary[$i][1] > $cbest Then
$dublic = 0
$best = $array[$c]
$cbest = $ary[$i][1]
ElseIf $ary[$i][1] = $cbest Then
$dublic = 1
EndIf
ContinueLoop 2
EndIf
Next
$ary[0][0] += 1
ReDim $ary[$ary[0][0]+1][2]
$ary[$ary[0][0]][0] = $array[$c]
$ary[$ary[0][0]][0] = 1
Next
Return SetError($dublic, $cbest, $best)
EndFunc
Wie der name sagt, soll sie die teile in dem array zählen. rückgabewert ist dann das element im array, welches am oftesten vorkommt. als @extended sagt es, wie oft es vorkam und @error sagt ob ein anderes element genau gleich oft kam.
das problem ist eben einfach die dauer bis es das jeweilige element gefunde hat. kennt dazu jemand eine lösung die möglichst doppelt so schnell ist?
womöglich geht es kaum schneller, aber wäre schon praktisch
EDIT:
Ich habe die geschwindigkeiten eurer Funktionen verglichen
AspirinJunkie's Funktion war im Test mit 512kB Daten die Schnellste. (Test mit 40k Elementen)
Die langsamste Funktion war meine mit beträchtlichem rückstand.
Die Ergebnisse (Ausgabe des UIs von meiner UDF TimBug. Die werd ich wenn möglich mal auf meine webseite posten ^^)
TimBug v1.0 by TimBlo
INFORMATION Dieses Programm testet die geschwindigkeit ihrer Funktionen.
-Funktion 1 Dauer: 21m 47.4s Geschwindigkeit: 0.39kB/s (Original) (2D Array)
-Funktion 2 Dauer: 2.6s Geschwindigkeit: 195.83kB/s (by ProgAndy)
-Funktion 3 Dauer: 0.3s Geschwindigkeit: 1559.55kB/s (by ProgAndy) (2D Array)
-Funktion 4 Dauer: 0.3s Geschwindigkeit: 1883.5kB/s (by AspirinJunkie) (2D Array)
20:03 Testprogramm beendet
20:03 Test Funktion 4 Abgeschlossen. 0.3s 1883.5kB/s
20:03 Test Funktion 3 Abgeschlossen. 0.3s 1559.55kB/s
20:03 Test Funktion 2 Abgeschlossen. 2.6s 195.83kB/s
20:03 Test Funktion 1 Abgeschlossen. 21m 47.4s 0.39kB/s
19:41 Testprogramm eingeleitet
19:41 Testprogramm gestartet
TimBug v1.0 by TimBlo
Alles anzeigen
Ich denke die ergebnisse (erstaunlich) stimmen so. wenn ich was falsch gemacht habe, wirds sich schon bemerkbar machen
Danke an ProgAndy und AspirinJunkie.