-
Data.XYMap.Lazy
et Data.XYMap.Strict
pour XY
en {"", "Int", "Hash"}
: L' *.Strict
variante forces de l'évaluation de la mappés à des valeurs de WHNF avant qu'ils ne soient placés dans la carte.
Le gros avantage de cela est de plus en plus prévisible de l'espace et du temps, le comportement, car il est beaucoup plus difficile de construire d'énormes thunks, en particulier pour les types de la forme (ConstructorN UnboxedValueTypeN
), ce qui est impossible.
L'inconvénient - je me souviens il y avait des exemples mis en place quand il a été examiné si la stricte ou paresseux variantes devrait devenir le défaut, mais je ne me souviens de rien en particulier.
Ah, juste de rappeler un cas d'utilisation: On peut faire un nœud avec l' Lazy
variantes, qui est bien sûr impossible avec l' Strict
versions! Donc si vous faire de telles choses: Lazy
.
J'utilise l' Strict
versions par défaut. Jusqu'à ce que j'ai besoin de faire des nœuds ou rencontre un autre cas d'utilisation où je considère que l' Lazy
variantes supérieur, je ne sais pas quand je les utiliserais.
-
Data.(ByteString/Text).Lazy
et Data.(ByteString/Text).Strict
La stricte versions utilisent un bloc monolithique de stockage de la charge utile, cela signifie que vous avez accès aléatoire rapide, pas seulement de façon séquentielle, mais aussi vers l'arrière à partir de la fin, ou de sauter en avant et en arrière.
Le paresseux versions sont fondamentalement de la tête stricte des listes de stricte des morceaux, leur force, c'est que séquentielle, leur consommation peut souvent être fait dans la constante de petite taille mémoire, ce qui est excellent si vous avez besoin de façon séquentielle de traiter des fichiers volumineux.
Pour les petits(ish) de données, certainement utiliser l' Strict
variantes, pour les grandes quantités de données de la Lazy
variantes si les données sont traitées (plus ou moins) de manière séquentielle.