La construction de tous de Boost en quelques minutes
Quelqu'un peut-il expliquer pourquoi en suivant ces instructions:
http://www.boost.org/doc/libs/1_59_0/more/getting_started/unix-variants.html#easy-build-and-install
... il prend mon décent machine à 5 heures pour construire tous les de Boost, tandis que certaines personnes rapport à faire de même dans seulement 3 minutes ?
Est-il une autre façon de construire le coup de pouce que celui mentionné ci-dessus que, de fait, va très vite (par rapport à plusieurs heures, en tout cas).
Je suis en utilisant le compilateur Clang sur Darwin (Mac) de l'option. Pas sûr de savoir comment il est pertinent mais j'ai 16 GO de RAM et un SSD récents. L'horloge de 2,3 Ghz.
Edit: je suis heureux de vous communiquer, sur la base des commentaires et des réponses, que l'utilisation de la ./b2 -j4 -d0
options, j'ai eu mon moment de la compilation que 13 minutes. Aussi la -jN
option n'est pas répertorié dans l'ensemble des options disponibles avec la valeur par défaut --help
, vous devez appeler plutôt --help-options
pour voir ces autres plus techniques "avancées".
- le compilateur et de la plate-forme?
- Vous avez mentionné dans le lien que vous avez un quad core, 3 ans macbook. Vous devriez être en mesure de réduire de 5 heures à un peu plus d'une demi-heure en utilisant
make -j8
; voir iSanych de réponse. - Ne
-d0
vraiment d'incidence sur le coup de pouce construire la vitesse?
Vous devez vous connecter pour publier un commentaire.
J'ai juste couru quelques tests avec un peu différents de configs.
Matériel: 2012 MacBook Pro (2.3 Ghz Ivy Bridge i7 [i7-3615QM]), l'usine de SSD et 16GO de ram.
Logiciel: Mac OS X 10.11.1 avec Xcode 7 (Apple LLVM version 7.0.0 clang-700.1.76). Nouvelle copie de Boost 1.59.0 à partir du site web.
J'ai testé la génération suivante commandes:
De Génération Par Défaut:
./bootstrap.sh && ./b2 -j N
Construire forcer la liaison de la libc++
./bootstrap.sh && ./b2 toolset=clang cxxflags="-stdlib=libc++" linkflags="-stdlib=libc++" -j N
Pour chaque j'ai essayé trois différentes valeurs de N: 1 (un seul thread), 4 (correspondant cœurs physiques), et 8 (correspondant à hyperthread cœurs).
Par défaut de la liaison:
Reliant la libc++:
Conclusion: Boost ne devriez pas avoir à prendre toute la journée pour construire sur un système multi-core avec un SSD, même si elle n'est pas neuve. Bâtiment avec la valeur par défaut (distingué fil) prend beaucoup plus de temps que d'une génération en parallèle. Le coup de pouce de construire avec clang sur OS X ne bénéficient légèrement de l'hyperthreading. Le lien avec la libc++ semble un peu plus vite.
./b2
?-j
mise à l'échelle est presque linéaire avec le nombre de cœurs et de l'hyperthreading ajoute 10 à 20% pour coup de pouce supplémentaire.Je suppose que vous n'êtes pas en utilisant en parallèle option de compilation -jN (où N certain nombre de processus, pourrait être un peu plus élevé que le nombre de cœurs sur votre machine). Aussi 3 min le son comme seule configuration de la machine avec un ssd ou un disque ram, et de 5 heures comme toute configuration avec un seul processus et lent disque dur.
./b2 -jn
avecn
égal au nombre de cœurs que vous avez. Vous verrez une réduction du temps de construction du rond-pointx/n
(comme cela devrait être prévu). Pour comparaison, j'ai juste fait unetime ./b2 -j12
sur ma station de développement (double hexacore Xeon @ 3.3 GHz), et est venu avec 2:05 min temps réel, 22:54 min temps de l'utilisateur../b2 -j4 -d0
pour voir ce qui se passe....Plus de boost sont des paquets d'en-tête uniquement. Si vous avez seulement besoin de ceux-ci, l'installation est simple copie de fichiers. En fonction du nombre de paquets construits que vous faites le temps peut varier de plusieurs ordres de grandeur. Plus oui, compilation parallèle, différents de la machine (Raspberry Pi vs 32 PROCESSEUR IvyBridge de la Lame), etc. Des bâtiments à partir de et vers
/dev/shm
, vous pouvez obtenir en accélération significative./dev/shm
est soutenu par la mémoire (c'est à dire un disque ram) plutôt que de freiner SSD ou HDD.