• # GNU parallel

    Posté par . En réponse à la dépêche Nouvelles versions logicielles du projet GNU avril et mai 2017. Évalué à 10.

    J'utilise GNU parallel dans la suite de test du compilateur OCaml, c'est très pratique pour lancer des commandes en parallèle en (1) séparant proprement les sorties de chaque commande sans les mélanger (contrairement à xargs) et (2) ayant l'option de préserver l'ordre séquentiel des affichages pour rester exactement compatible à un comportement précédent.

    Le code se trouve dans testsuite/Makefile avec un long commentaire qui explique les choix, mais la partie centrale est très simple:

     for dir in tests/$**; do echo $$dir; done \
     | parallel --gnu --no-notice --keep-order \
     "$(MAKE) $(NO_PRINT) exec-one DIR={} 2>&1" \
     | tee _log \
    

    Cela exécute la commande $(MAKE) $(NO_PRINT) exec-one DIR=$foo 2>&1 pour chaque répertoire de test $foo—en parallèle, mais en préservant l'ordre des sorties.

    Sur ma machine le temps de test est passé de 2 minutes et 30 secondes à 57 secondes.