Schnelle Sortierung in Haskell

8

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:

  • Warum nehmen die Leistungen immer noch mit einem vorsortierten Vektor ab?
  • Warum kann die Verwendung von forkIO und vier Threads die Leistung nicht verbessern?
Simon 28.07.2013, 20:06
quelle

1 Antwort

1

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%     
Boldizsár Németh 22.08.2013 15:13
quelle

Tags und Links