कई सीपीयू कोर (12 का कहना है) के साथ एक कार्य केंद्र पर एक सॉफ्टवेयर पैकेज संकलित करने के लिए, कॉन्फ़िगरेशन चरण अक्सर वास्तविक संकलन चरण की तुलना में अधिक समय लेता है क्योंकि ./configure
परीक्षण एक-एक करके करता है, जबकि समानांतर में अन्य कमांड भी make -j
चलाता है gcc
।
मुझे लगता है कि शेष 11 कोर खाली बैठे होने के लिए संसाधनों का एक बड़ा बेकार है, धीमी गति ./configure
से पूरा होने की प्रतीक्षा कर रहा है । इसे क्रमिक रूप से परीक्षण करने की आवश्यकता क्यों है? क्या प्रत्येक परीक्षण एक दूसरे पर निर्भर करता है? मुझसे गलती हो सकती है, लेकिन ऐसा लगता है कि उनमें से अधिकांश स्वतंत्र हैं।
इससे भी महत्वपूर्ण बात यह है कि क्या इसमें कोई तेजी है ./configure
?
संपादित करें: स्थिति को स्पष्ट करने के लिए, यहां जीएनयू कोरुटिल्स के साथ एक उदाहरण दिया गया है
cd /dev/shm
rm -rf coreutils-8.9
tar -xzf coreutils-8.9.tar.gz
cd coreutils-8.9
time ./configure
time make -j24
परिणाम:
# For `time ./configure`
real 4m39.662s
user 0m26.670s
sys 4m30.495s
# For `time make -j24`
real 0m42.085s
user 2m35.113s
sys 6m15.050s
साथ coreutils-8.9 , ./configure
लेता है 6 गुना से अधिक समय make
। यद्यपि ./configure
कम CPU समय का उपयोग करें ("उपयोगकर्ता" और "sys" बार देखें), इसमें बहुत अधिक समय ("वास्तविक") लगता है क्योंकि इसे समानांतर किया गया है। मैंने परीक्षण को कुछ बार दोहराया है (प्रासंगिक फाइलों के साथ संभवतः मेमोरी कैश में रह रहा है) और समय 10% के भीतर है।