12-11-18, 10:32
(Modification du message : 12-11-18, 10:48 par JeanLucLacroix.)
Bonjour,
Après quelques années d'utilisation je me suis inévitablement retrouvé avec un certain nombres d'images orphelines de leur fichier (tête de mort)
J'ai d'abord utilisé la dernière version du script dt purge_non_existing_images.sh pour faire le nettoyage
https://github.com/darktable-org/darktab..._images.sh
Très lent. J'ai cru qu'il s'était planté. En lisant le script, je me suis dit qu'il pouvait être amélioré en utilisant (g)awk
Benchmark
Mon script awk utilise un appel au shell ("system") pour vérifier l'existence d'un fichier alors que le script gawk utilise "stat()" de la librairie filefunc de gawk. Bien plus rapide que l'appel "system".
Version awk
https://gist.github.com/esperlu/cdad8e7e...ea4d06d4bb
Version gawk
https://gist.github.com/esperlu/3d4c58bd...ac4144bd51
Quelqu'un pour valider ces scripts? J'ai testé, mais qu'en pensent les dev?
Note: utiliser, bien sûr, une copie de library.db pour tester.
Jean-Luc
Après quelques années d'utilisation je me suis inévitablement retrouvé avec un certain nombres d'images orphelines de leur fichier (tête de mort)
J'ai d'abord utilisé la dernière version du script dt purge_non_existing_images.sh pour faire le nettoyage
https://github.com/darktable-org/darktab..._images.sh
Très lent. J'ai cru qu'il s'était planté. En lisant le script, je me suis dit qu'il pouvait être amélioré en utilisant (g)awk
Benchmark
- DB de 17000 fichiers/images (table images)
- fichiers orphelins à purger: 80
- script dt: 50 sec.
- script awk: 5 sec.
- script gawk: 0.3 sec.
Mon script awk utilise un appel au shell ("system") pour vérifier l'existence d'un fichier alors que le script gawk utilise "stat()" de la librairie filefunc de gawk. Bien plus rapide que l'appel "system".
Version awk
https://gist.github.com/esperlu/cdad8e7e...ea4d06d4bb
Version gawk
https://gist.github.com/esperlu/3d4c58bd...ac4144bd51
Quelqu'un pour valider ces scripts? J'ai testé, mais qu'en pensent les dev?
Note: utiliser, bien sûr, une copie de library.db pour tester.
Jean-Luc