Par exemple, bzip
il existe pbzip , une version parallèle de bzip
. Existe-t-il de tels outils de parallélisation pour sort
améliorer les performances?
performance
sort
miku
la source
la source
La seule chose qui m'aide toujours le plus avec le tri est de lui donner le plus de mémoire possible, afin de réduire les échanges, par exemple:
la source
sort -S 50%
Si votre fichier est suffisamment volumineux, le tri entraînera un échange de disque, soit parce que la mémoire virtuelle allouée est trop volumineuse, soit parce que le
sort
programme lui-même échange des morceaux sur le disque et vice-versa. Lessort
implémentations plus anciennes sont plus susceptibles d'avoir ce type de comportement de "tri via le tampon de disque", car c'était la seule façon de trier les fichiers volumineux dans le passé.sort
a une-m
option qui peut vous aider ici. Il pourrait être plus rapide de diviser le fichier en morceaux - par exemple avecsplit -l
- les trier indépendamment, puis de les fusionner à nouveau.Là encore, il se peut que c'est exactement ce que fait le "tri via le tampon de disque". La seule façon de savoir si cela aide est de le comparer à votre charge de test particulière. Le paramètre critique sera le nombre de lignes auquel vous donnez
split -l
.la source
split
etmerge
voir si ça aide.merge(1)
soit applicable ici. Utilisezsort -m
.sort --merge
.J'ai eu un gain très important en utilisant
sort -n
, ce qui nécessite des valeurs numériques (float ou entier) dans toutes les colonnes sélectionnées, sans notation scientifique.Une autre possibilité qui pourrait apporter une grande amélioration à votre processus est d'utiliser le dossier mappé en mémoire
/dev/shm
pour traiter les fichiers intermédiaires.la source
Habituellement, le tri Linux fait des trucs astucieux pour se conformer aux règles d'égalité Unicode ... si vous changez les paramètres régionaux en C, il passe en octet uniquement ...
Pour un fichier de 1,4 Go, la différence sur ma machine est de 20 s contre 400 s (!!!)
la source
LC_ALL=C
?LC_COLLATE
- être déjà assez. AFAIKsort
utilisestrcoll
pour la comparaison et la page de manuel indique que le comportement dépend deLC_COLLATE
le fichier est divisé et trié, il augmentera la vitesse de tri
la source