Ich führe elementweise Operationen an zwei Vektoren in der Größenordnung von 50.000 Elementen in der Größe durch und habe unbefriedigende Leistungsprobleme (einige Sekunden). Gibt es irgendwelche offensichtlichen Leistungsprobleme, wie zum Beispiel die Verwendung einer anderen Datenstruktur?
%Vor%Versuchen Sie Folgendes:
%Vor%Einige Anmerkungen:
map
ping eine Funktion an mehrere Sammlungen verwendet ein Element von jedem als die Argumente für die Funktion - keine Notwendigkeit interleave
und partition
für diese. xor
schneller als die absolute Differenz Zeitgesteuertes Beispiel:
%Vor%Nach dem Aufwärmen der JVM ...
%Vor%Sie sollten sich die core.matrix ansehen, wenn Sie an einer guten Leistung für große Vektoroperationen interessiert sind.
> Insbesondere die vectorz-clj -Bibliothek (eine core.matrix-Implementierung) hat einige sehr schnelle Implementierungen für die gebräuchlichsten Vektoroperationen mit double
-Werten.
d. unter 20ns
pro Paar Elemente - das ist ziemlich schnell: Sie wären schwer zu schlagen, ohne auf Low-Level-Array-Fiddling-Code zurückgreifen.
Tags und Links loops clojure performance