Du musst schon bei der Zeitberechnung bedenken, dass du immer paarweise Vergleiche hast
. Das ist dann O(n*(n+1)/2), und bei 100 Liedern schon 3sek*100*(101/2) = 15150 sek = 252,5 min ~= 4,21 std.
Ich muss aber den Fingerprint pro Lied nur einmal berechnen. Die eigentliche Rechenoperation, die zwei Lieder miteinander vergleicht, braucht gerade mal 0,002 Sekunden. Da dauert das Laden der Daten aus der
DB fast länger.
Highttower, danke für deine Testreihe. Man sieht, denke ich, gut, dass man nicht pauschal sagen kann, dass Lied1 ähnlich Lied3 ist, auf der anderen Seite ist der Abstand jetzt aber auch nicht sooooo groß... Hier sind sicherlich Optimierungen möglich/nötig.
Zur Genauigkeit der Bestimmung des Fingerprints habe ich auch noch einzuwerfen, dass ich Stille am Anfang der Lieder noch nicht ignoriere. D.h., sollte man bspw. 5 Sekunden am Beginn nichts hören, fließt das auch in die Berechnung ein. Das kann natürlich die Ergebnisse verfälschen.