J'ai un projet avec une énorme quantité de code généré automatiquement, que nous construisons dans une bibliothèque statique avant de créer un lien vers l'exécutable final. Nous utilisons gcc/moucheron 5.04a Il y a tellement de fichiers, nous devons briser le travail en lots et invoquer ar plusieurs fois pour construire la bibliothèque (afin d'éviter la limitation de longueur de ligne de commande), par exemple:Amélioration des performances d'archivage ar
[echo] Archiving codegen
[echo] Deleting old codegen archive
[ar] Using ar found in /usr/bin
[ar] Batch 1 of 7 completed in 37.871 s
[ar] Batch 2 of 7 completed in 55.796 s
[ar] Batch 3 of 7 completed in 89.709 s
[ar] Batch 4 of 7 completed in 256.894 s
[ar] Batch 5 of 7 completed in 196.704 s
[ar] Batch 6 of 7 completed in 248.334 s
[ar] Batch 7 of 7 completed in 243.759 s
[ar] Archiving took: 1129.067 s
[ar] Using ranlib found in /usr/bin
[ar] Indexing took: 247.223 s
[echo] Done with codegen
Nous recherchons des améliorations de vitesse potentielles. Il semble que, à mesure que l'archive grandit, chaque lot prend de plus en plus de temps, vraisemblablement parce qu'il a plus à chercher (pour les mises à jour) avant d'ajouter des objets. Cela semble être pourquoi la suppression de l'archive rend plus rapide que la simple mise à jour de l'ancienne archive en place. Dans notre quête de plus de vitesse, nous utilisons les drapeaux "qcS" pour la commande ar. Selon la page de manuel, "q" (qui devrait être rapide-append) est vraiment un synonyme de "r" (qui est "use replacement"), "c" crée l'archive (rien de spécial là) et "S" saute générer un index (que nous couvrons en utilisant de nouveau "ranlib" à la fin)
Y a-t-il un moyen pratique, en utilisant des outils intégrés, de rendre cette opération plus rapide? Soit ce que nous voulons, mais hélas