Nach dem Lesen der Stapelüberlauffrage Verwenden von Vektoren zur Leistungsverbesserung in Haskell , die eine schnelle Eingabe beschreiben Platzieren Sie quicksort in Haskell, ich habe mir zwei Ziele gesetzt:
Implementieren des gleichen Algorithmus mit einem Median von drei, um schlechte Leistungen auf vorsortierten Vektoren zu vermeiden;
Eine parallele Version erstellen.
Hier ist das Ergebnis (einige kleinere Stücke wurden zur Vereinfachung gelassen):
%Vor%Für Vektoren mit 1.000.000 Elementen bekomme ich folgende Ergebnisse:
%Vor%Meine Fragen sind:
Eine bessere Idee ist die Verwendung von Control.Parallel.Strategies
zur Parallelisierung von Quicksort. Mit diesem Ansatz erstellen Sie keine teuren Threads für jeden Code, der parallel ausgeführt werden kann. Sie können auch eine reine Berechnung anstelle eines IO erstellen.
Dann müssen Sie nach der Anzahl der Kerne kompilieren, die Sie haben: Ссылка
Schauen Sie sich zum Beispiel dieses einfache Quicksort in Listen an, geschrieben von Jim Apple:
%Vor%