Sto implementando un'applicazione in Haskell e, per l'ordinamento, uso la funzione di libreria Data.List.sort
. Tuttavia, mi chiedevo se questa è l'implementazione di ordinamento più veloce nella libreria standard Haskell (forse gli elenchi non sono la scelta migliore per l'ordinamento efficiente).
Ho trovato diverse alternative, ad es. ordinamento heap su matrici , < a href="http://www.haskell.org/ghc/docs/latest/html/libraries/containers/Data-Sequence.html#g:10"> ordina le sequenze (ma la documentazione non dì che tipo di algoritmo è usato).
La mia domanda è: qual è l'implementazione di ordinamento più veloce (tipo di contenitore + funzione di ordinamento) fornita dalla libreria standard Haskell? C'è qualche pagina di documentazione che elenca tutte le funzioni di ordinamento delle librerie e le confronta con le loro prestazioni?
Modifica
Per fornire un contesto più ampio, ho un punto di riferimento. Ho scritto un semplice programma in C, Java, Python e Haskell che
- Legge 1000000 stringhe (linee) da un file di testo.
- Ordina le stringhe utilizzando un algoritmo di ordinamento incorporato (libreria).
- Scrive l'elenco ordinato di stringhe su un file.
Per ogni implementazione, misuro solo il tempo di smistamento (tralasciando il tempo necessario per l'IO del disco). Eseguendo il benchmark su Ubuntu 12.04, ottengo
- C (gcc 4.6.3,
qsort
suchar **
): 0.890 s - Java (OpenJDK 64-Bit 1.7.0_09,
Collections.sort()
sujava.util.LinkedList<String>
): 1.307 s - Python (Python 2.7.3,
list.sort()
): 1.072 s - Haskell (GHC 7.4.1,
Data.List.sort
su[Data.ByteString.UTF8.ByteString]
): 11.864 s
Quindi mi chiedo se ci sia un altro tipo di dati / funzione di libreria in Haskell che possa offrire prestazioni migliori.