Conocimiento común sobre el rendimiento de haskell [cerrado]

Hola Haskellers por ahí!

Tengo la sensación de que las preguntas sobre el rendimiento surgen con mayor frecuencia y que el conocimiento sobre qué funciones / algoritmos / bibliotecas son rápidos y estables es escaso.

Por supuesto hay bibliotecas comoCriterion que permiten realizar mediciones por cuenta propia, y existe un perfilador que puede ser invocado por

> ghc -O2 --make program.hs -prof -auto-all
> ./program +RTS -s

como lo explica excelentemente @DonStewart enHerramientas para analizar el rendimiento de un programa Haskell.

Yo sé eso:

el uso deread yshow suele ser un cuello de botella (para laread-función en el caso de números hay laNumeric paquete que trae un rendimiento de aceleracióny ahí están losSequence, Array, Vector yMap bibliotecas, que a menudo son más adecuadas para resolver un problema que usar listas o listas anidadasText yBytestring son una mejor opcion que StringHace poco vi que incluso el uso del generador de números estándar ralentiza significativamente un programa y quemwc-random Es mucho más rápido.También las respuestas dePython más rápido que Haskell compilado? reveló que el algoritmo de clasificación estándar es definitivamente mejorableEl uso deInt más bien queInteger, BangPatterns y los pliegues estrictos a menudo producen un aumento en el rendimientoExistenconduit ypipes para "restringir" la IO (que debo admitir que todavía no he usado)Las firmas tipo son una mejora general.

¿Cuáles son otras dificultades y cuellos de botella comunes que uno tiende a usar?

¿Cómo resolverlos?

Los temas que me vienen a la mente son:

funcionesestructuras de datosalgoritmosExtensiones de idioma (para GHC)?opciones del compilador?

Respuestas a la pregunta(0)

Su respuesta a la pregunta