Par défaut, gdu utilise 16 CPU, je l'ai donc testé à 8 également, pour le comparer à ncdu que je n'ai que testé à 8. Après tout, c'est le nombre de cœurs physiques de ma machine. Et je l'ai testé avec 1 seul CPU, pour le comparer à ncdu sur la non-parallélisation.
Les tests sont lancés avec hyperfine.
Test 1 : TMPFS de 4,2Go
Mon /tmp possède un dépôt git de 1 Go et un cache de cargo en train de compiler. On teste donc la vitesse de calcul.
Summary
/tmp/ncdu -0 -o /dev/null -t8 '/tmp' ran
1.91 ± 0.60 times faster than ncdu -0 -o /dev/null '/tmp'
2.63 ± 0.85 times faster than /tmp/ncdu -0 -o /dev/null '/tmp'
3.50 ± 1.10 times faster than /tmp/gdu_linux_amd64 --non-interactive --no-progress --output-file /dev/null --max-cores 8 '/tmp'
4.25 ± 1.41 times faster than /tmp/gdu_linux_amd64 --non-interactive --no-progress --output-file /dev/null '/tmp'
6.80 ± 2.14 times faster than /tmp/gdu_linux_amd64 --non-interactive --no-progress --output-file /dev/null --max-cores 1 '/tmp'
Test 2 : /home/glandos
Là, j'ai exclu les points de montage, j'ai du NFS, donc je n'ai gardé que ce qui se trouve sur mon SSD. J'ai fait également une première passe à blanc pour tout mettre dans le cache. Il y a quand même 144 Go.
Summary
/tmp/ncdu -0 -o /dev/null -t8 -x '/home/glandos' ran
3.02 ± 0.05 times faster than /tmp/gdu_linux_amd64 --non-interactive --no-progress --output-file /dev/null -x '/home/glandos'
3.19 ± 0.06 times faster than /tmp/gdu_linux_amd64 --non-interactive --no-progress --output-file /dev/null --max-cores 8 -x '/home/glandos'
4.18 ± 0.07 times faster than /tmp/ncdu -0 -o /dev/null -x '/home/glandos'
4.47 ± 0.08 times faster than ncdu -0 -o /dev/null -x '/home/glandos'
11.43 ± 0.21 times faster than /tmp/gdu_linux_amd64 --non-interactive --no-progress --output-file /dev/null --max-cores 1 -x '/home/glandos'
Test 2bis : on enlève les caches
hyperfine est lancé avec --prepare "echo 3 > /proc/sys/vm/drop_caches" (et oui, j'ai lancé ça en root, c'est plus simple) qui va vider le cache entre chaque commande. Les commandes ne sont exécutées que 3 fois (au lieu de 10), parce que c'est vraiment trop lent sinon.
Summary
/tmp/gdu_linux_amd64 --non-interactive --no-progress --output-file /dev/null -x '/home/glandos' ran
1.12 ± 0.02 times faster than /tmp/gdu_linux_amd64 --non-interactive --no-progress --output-file /dev/null --max-cores 8 -x '/home/glandos'
1.25 ± 0.05 times faster than /tmp/ncdu -0 -o /dev/null -t8 -x '/home/glandos'
7.01 ± 0.13 times faster than /tmp/ncdu -0 -o /dev/null -x '/home/glandos'
7.04 ± 0.15 times faster than ncdu -0 -o /dev/null -x '/home/glandos'
7.87 ± 0.15 times faster than /tmp/gdu_linux_amd64 --non-interactive --no-progress --output-file /dev/null --max-cores 1 -x '/home/glandos'
Test bonus
ncdu 2.9.1 compilé en statique fait 768280 octets, soit 768 ko.
gdu 5.31 compilé en statique fait 15413432 octets, soit 15 Mo.
Ma conclusion
Le parallélisme, c'est bien, mais j'ai l'impression que ncdu va rester mon choix. Ça va quand même plus vite sur tous les cas, sauf la version sans cache avec 16 flux d'exécution, et je n'ai même pas testé ncdu avec 16 flux...
Et tout ça dans moins de 1 Mo statique, s'il vous plaît.
# VS ncdu
Posté par Glandos . En réponse au journal Du balai avec la commande gdu. Évalué à 10.
Commandes
/tmp/ncdu : ncdu 2.9.1 binaire statique téléchargé depuis https://dev.yorhel.nl/ncdu
ncdu : ncdu 1.22 de Debian/unstable
/tmp/gdu_linux_amd64 : gdu 5.31 téléchargé depuis https://github.com/dundee/gdu/releases/tag/v5.31.0
Mon disque est un SSD Samsung 850 Pro
Par défaut, gdu utilise 16 CPU, je l'ai donc testé à 8 également, pour le comparer à ncdu que je n'ai que testé à 8. Après tout, c'est le nombre de cœurs physiques de ma machine. Et je l'ai testé avec 1 seul CPU, pour le comparer à ncdu sur la non-parallélisation.
Les tests sont lancés avec hyperfine.
Test 1 : TMPFS de 4,2Go
Mon /tmp possède un dépôt git de 1 Go et un cache de cargo en train de compiler. On teste donc la vitesse de calcul.
Test 2 : /home/glandos
Là, j'ai exclu les points de montage, j'ai du NFS, donc je n'ai gardé que ce qui se trouve sur mon SSD. J'ai fait également une première passe à blanc pour tout mettre dans le cache. Il y a quand même 144 Go.
Test 2bis : on enlève les caches
hyperfine est lancé avec
--prepare "echo 3 > /proc/sys/vm/drop_caches"(et oui, j'ai lancé ça en root, c'est plus simple) qui va vider le cache entre chaque commande. Les commandes ne sont exécutées que 3 fois (au lieu de 10), parce que c'est vraiment trop lent sinon.Test bonus
ncdu 2.9.1 compilé en statique fait 768280 octets, soit 768 ko.
gdu 5.31 compilé en statique fait 15413432 octets, soit 15 Mo.
Ma conclusion
Le parallélisme, c'est bien, mais j'ai l'impression que ncdu va rester mon choix. Ça va quand même plus vite sur tous les cas, sauf la version sans cache avec 16 flux d'exécution, et je n'ai même pas testé ncdu avec 16 flux...
Et tout ça dans moins de 1 Mo statique, s'il vous plaît.
Après, OK, gdu est plus joli.