2010-02-13 17 views
14

जब मैं कुछ संकलित करने के लिए MSYS का उपयोग करता हूं, ./configure चरण make से अधिक समय ले सकता है। हालांकि, लिनक्स में एक ही प्रक्रिया में तेज कॉन्फ़िगरेशन और धीमी मेक है। क्या यह एमएसवाईएस में बस कुछ सेटिंग है जो मेरे सिस्टम को दबा रहा है? क्या किसी के पास एक समाधान है?MSYS में इतना धीमा क्यों कॉन्फ़िगर किया गया है?

उत्तर

21

विशिष्ट configure स्क्रिप्ट छोटे subprocesses शुरू करने के बहुत करते हैं। यूनिक्स की तरह ऑपरेटिंग सिस्टम पर, यह fork() और exec() फ़ंक्शन कॉल के साथ किया जाता है, जिसमें बहुत विशिष्ट अर्थशास्त्र होते हैं जिन्हें संरक्षित करने की आवश्यकता होती है (उदाहरण के लिए, फोर्किंग के बाद कॉपी-ऑन-राइट साझा मेमोरी)। विंडोज़ पर, उपप्रोसेसेस CreateProcess() के साथ बनाए जाते हैं जिनमें बहुत अलग अर्थशास्त्र होते हैं (उदाहरण के लिए माता-पिता से पूरी तरह अलग मेमोरी स्पेस)। यूनिक्स जैसी स्क्रिप्ट और प्रोग्राम को सही तरीके से निष्पादित करने के लिए, एमएसवाईएस को यूनिक्स पर fork()/exec() जैसे विंडोज़ काम पर नई प्रक्रियाएं बनाने के लिए बहुत सारे इम्यूलेशन कार्य करने की आवश्यकता है। यह एक ओएस की तुलना में धीमी गति से समाप्त होता है जो उन फ़ंक्शन को मूल रूप से कॉल करता है।

+2

यह वास्तव में विंडोज़ पर 'CreateProcess' के लिए बुरा नहीं है। मुझे लगता है कि साइगविन खिड़कियों पर कांटा अनुकरण करने की कोशिश करता है जो इसे बेहद धीमा कर देता है। यदि बैश कांटा का उपयोग नहीं कर रहा था (मेरा अनुमान है कि यह कांटा का उपयोग करता है, लेकिन मैंने जांच नहीं की है) प्रक्रिया शुरू करने के लिए कॉन्फ़िगर करें जितना तेज़ होगा। जब मैं इस "समस्या" को ठीक करने की कोशिश कर रहा था, तो मेरे i7 बॉक्स पर यह दिखाई दिया कि साइगविन प्रति सेकंड केवल कुछ बार कांटा सकता है। कांटा की गति का परीक्षण करने का एक तरीका: जबकि (सच); तारीख करो; किया uniq -c – Pavel

+1

+1 पावेल .. uclinux एक ही मुद्दा था जो इसे एमएमयू के बिना चला सकता है और कांटा के साथ कुछ भी बहुत धीमी पूर्ण प्रतिलिपि का उपयोग करता है – user1496062

0

आप जो भी वायरस स्कैनर चला रहे हैं उसे बंद करना भी चाह सकते हैं। वे हर बार लोड होने पर निष्पादन योग्य फिर से स्कैन करेंगे, जो पूरी तरह से स्क्रिप्ट प्रदर्शन को मारता है।

भले ही आपके पास एंटी-वायरस चल रहा न हो, फिर भी विंडोज डिफेंडर को न भूलें। (आप उपयोगकर्ता खाता नियंत्रण को भी अक्षम करना चाहते हैं, हालांकि मुझे नहीं पता कि प्रोग्राम लोड समय पर क्या प्रभाव है।)

0

बहुत सारी डिस्क एक्सेस शामिल है, जो आईएमएचओ चीजों को बहुत धीमा कर देती है। उदाहरण के लिए कॉन्फ़िगरेशन परीक्षणों के भाग के रूप में संकलित करने के लिए अस्थायी स्रोत कोड बनाता है। यह एक ऑब्जेक्ट फ़ाइल बनाता है जिसे दोबारा हटाया जाना है। कॉन्फ़िगरेशन को तेज़ करने के लिए मैं जो करता हूं वह उस स्रोत को निकाला जाता है जिसे मैं रैम ड्राइव पर बनाना चाहता हूं और इसे कॉन्फ़िगर और संकलित करता हूं। मैं ImDisk (http://www.ltr-data.se/opencode.html/#ImDisk) का उपयोग करने की सलाह देता हूं जो निःशुल्क है।

संबंधित मुद्दे