Allgemeinwissen über die Leistung von Haskell [geschlossen]

8

Hallo Haskellers da draußen!

Ich habe das Gefühl, dass Fragen zur Performance häufiger aufkommen und dass das Wissen, welche Funktionen / Algorithmen / Bibliotheken schnell und stabil sind, spärlich ist.

Natürlich gibt es Bibliotheken wie Criterion , die es erlauben, selbst Messungen durchzuführen, und es gibt den Profiler, der von

aufgerufen werden kann %Vor%

wie ausgezeichnet von @DonStewart in Tools für Analyse der Leistung eines Haskell-Programms

Ich weiß das:

  • die Verwendung von read und show ist normalerweise ein Flaschenhals (für die read -Funktion im Fall von Zahlen gibt es das Numeric -Paket, das eine Leistungssteigerung bringt
  • und es gibt die Bibliotheken Sequence , Array , Vector und Map , die oft besser geeignet sind, ein Problem zu lösen, als Listen oder verschachtelte Listen zu verwenden
  • Text und Bytestring sind eine bessere Option als String
  • Ich habe kürzlich gesehen, dass sogar die Verwendung des Standard-Zahlengenerators ein Programm erheblich verlangsamt und dass mwc-random viel schneller ist.
  • Auch die Antworten von Python schneller als kompiliertes Haskell? ergab, dass die Standard-Sortierung Algorithmus ist definitiv verbesserungsfähig
  • Die Verwendung von Int anstatt Integer , BangPatterns und strikter Falten führt oft zu einer Leistungssteigerung
  • Es gibt conduit und pipes für "stricten" IO, (was ich zugeben muss, dass ich noch nicht benutzt habe)
  • Signaturen sind generell eine Verbesserung

Was sind andere häufige Fallstricke und Engpässe, die man benutzt?

Wie lösen Sie diese?

Die Themen, die mir in den Sinn kommen, sind:

  • Funktionen
  • Datenstrukturen
  • Algorithmen
  • LANGUAGE-Erweiterungen (für GHC)?
  • Compileroptionen?
epsilonhalbe 29.01.2014, 17:07
quelle

0 Antworten

Tags und Links