मैं सीएमके सक्षम सी ++ परियोजनाओं के हाल ही में समय (जैसे "At what level should I distribute my build process?" या "cmake rebuild_cache for just a subdirectory?") के बारी-बारी के समय में सुधार के विशिष्ट पहलुओं के बारे में कई एसओ प्रश्नों में आया, मैं सोच रहा था कि सीएमके की विशिष्ट संभावनाओं का उपयोग करने के लिए अधिक सामान्य मार्गदर्शन है या नहीं। यदि संभवतः कोई क्रॉस-प्लेटफ़ॉर्म संकलन समय अनुकूलन नहीं है, तो मुझे मुख्य रूप से विजुअल स्टूडियो या जीएनयू अतिचेक आधारित दृष्टिकोण में रूचि है।मेरे सीएमके सक्षम सी ++ प्रोजेक्ट का संकलन समय कैसे बढ़ाएं?
और मैं पहले से ही के बारे में पता है और आम तौर पर की सिफारिश की क्षेत्रों में निवेश सी ++ तेजी लाने के लिए कर रहा हूँ बनाता है:
बदलें/अनुकूलन/फ़ाइन-ट्यून toolchain
अपने कोड बेस का अनुकूलन/सॉफ्टवेयर वास्तुकला (निर्भरता को कम करके जैसे और प्रयोग अच्छी तरह से परिभाषित उप-परियोजनाओं - इकाई परीक्षण)
एक बेहतर हार्डवेयर में निवेश (एसएसडी, सीपीयू, स्मृति)
+०१२३५१६४१०६
अनुशंसित here, here या here की तरह। तो इस सवाल में मेरा ध्यान पहली बात पर है।
प्लस मैं सिफारिशों के बारे में पता CMake के विकी में पाया जा सकता:
पूर्व सिर्फ ज्यादातर कैसे मूल बातें (समानांतर मेक), बाद में हैंडल हैंडल सीएमके फाइलों को पार्सिंग करने के लिए।
बस इस एक छोटे से अधिक ठोस बनाने के लिए, अगर मैं अपने CMake उदाहरण MSYS/जीएनयू का उपयोग कर here 100 के साथ पुस्तकालयों से मैं निम्नलिखित time
माप परिणाम मिला ले:
$ cmake --version
cmake version 3.5.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
$ time -p cmake -G "MSYS Makefiles" ..
-- The CXX compiler identification is GNU 4.8.1
...
-- Configuring done
-- Generating done
-- Build files have been written to: [...]
real 27.03
user 0.01
sys 0.03
$ time -p make -j8
...
[100%] Built target CMakeTest
real 113.11
user 8.82
sys 33.08
तो मैं की कुल राशि ~ 140 सेकंड और मेरा लक्ष्य - इस स्वीकार्य रूप से बहुत ही सरल उदाहरण के लिए - इसे मानक सेटिंग्स/टूल के साथ प्राप्त होने वाले लगभग 10-20% तक पहुंचाना होगा।
इसके अलावा, उपयोग ccache। यह बहुत तेजी से recompilations बनाता है। – csl
यदि आपका निर्माण प्रणाली ठीक से बढ़ती पुनर्निर्माण कर रही है, तो सीसीएसी मदद के लिए बहुत कम होना चाहिए। अच्छी तरह से लिखे गए सेमेक बिल्ड पर जो वृद्धिशील बनाता है सही बनाता है, सीसीएसी वास्तव में आपको इसके ऊपरी हिस्से से नीचे धीमा कर देता है। मैंने अतीत में परियोजनाओं पर सीसीएसी के साथ सफलता हासिल की है जो चूसने वाली बिल्डिंग प्रणालियों के साथ सफलतापूर्वक संकलन नहीं करती है, हालांकि (फ़ायरफ़ॉक्स, साल पहले) –