दृश्य स्टूडियो 2005 पर बहुत धीमा संकलन


132

हम बहुत धीमी गति से संकलन कर रहे हैं, जो दोहरे कोर 2GHz, 2G राम मशीनों पर 20+ मिनट तक का समय ले सकता है।

इसमें से बहुत कुछ हमारे समाधान के आकार के कारण है जो 70+ परियोजनाओं तक बढ़ गया है, साथ ही साथ वीएसएस जो कि अपने आप में एक बोतल गर्दन है जब आपके पास बहुत सारी फाइलें होती हैं। (VSS को स्वैप करना दुर्भाग्य से कोई विकल्प नहीं है, इसलिए मैं नहीं चाहता कि यह VSS बैश में उतरे)

हम विलय की परियोजनाओं को देख रहे हैं। हम आवेदन के प्रत्येक तत्व के लिए चिंताओं के अधिक से अधिक पृथक्करण और त्वरित संकलन समय को प्राप्त करने के लिए कई समाधानों को देख रहे हैं। यह मैं देख सकता हूं कि हम एक डीएलएल नरक बन जाएंगे क्योंकि हम चीजों को सिंक में रखने की कोशिश करते हैं।

मुझे यह जानने में रुचि है कि अन्य टीमों ने इस स्केलिंग मुद्दे से कैसे निपटा है, आप क्या करते हैं जब आपका कोड आधार एक महत्वपूर्ण द्रव्यमान तक पहुंच जाता है जो आप आधे दिन बर्बाद कर रहे हैं और स्टेटस बार डिलीट मैसेज देख रहे हैं।

अपडेट करें मैं यह उल्लेख करने के लिए उपेक्षित हूं कि यह एक # समाधान है। सभी C ++ सुझावों के लिए धन्यवाद, लेकिन मुझे हेडर के बारे में चिंता करने के लिए कुछ साल हो गए हैं।

संपादित करें:

अब तक मदद करने वाले अच्छे सुझाव (यह कहते हुए कि नीचे अन्य अच्छे सुझाव नहीं हैं, बस क्या मदद की है)

  • नया 3GHz लैपटॉप - खो उपयोग की शक्ति प्रबंधन के लिए जब अद्भुत काम करता है
  • संकलन के दौरान एंटी वायरस को अक्षम करें
  • संकलन के दौरान वीएसएस (वास्तव में नेटवर्क) से 'डिस्कनेक्ट' - मैं वीएस-वीएसएस एकीकरण को पूरी तरह से हटाने के लिए हमें प्राप्त कर सकता हूं और वीएसएस यूआई का उपयोग करने के लिए छड़ी कर सकता हूं

फिर भी एक संकलन के माध्यम से चीर-सूंघ नहीं, लेकिन हर बिट मदद करता है।

ओरियन ने एक टिप्पणी में उल्लेख किया कि जेनरिक में एक नाटक भी हो सकता है। मेरे परीक्षणों से प्रतीत होता है कि एक न्यूनतम प्रदर्शन हिट है, लेकिन यह सुनिश्चित करने के लिए पर्याप्त उच्च नहीं है - डिस्क गतिविधि के कारण संकलन समय असंगत हो सकता है। समय सीमाओं के कारण, मेरे परीक्षणों में कई जेनरिक, या उतने कोड शामिल नहीं थे, जितने कि लाइव सिस्टम में दिखाई देंगे, ताकि जमा हो सके। मैं जेनरिक का उपयोग करने से बचना नहीं चाहूँगा जहाँ उनका उपयोग किया जाना है, बस संकलन समय प्रदर्शन के लिए

कारगर युक्तियाँ

हम नए समाधानों में एप्लिकेशन के नए क्षेत्रों के निर्माण के अभ्यास का परीक्षण कर रहे हैं, आवश्यकतानुसार नवीनतम dll में आयात कर रहे हैं, उन्हें बड़े समाधान में एकीकृत करते हैं जब हम उनसे खुश होते हैं।

हम अस्थायी समाधान बनाकर उन्हें मौजूदा कोड के समान भी कर सकते हैं जो उन क्षेत्रों को कूटबद्ध करते हैं जिन पर हमें काम करने की आवश्यकता होती है, और कोड को फिर से स्थापित करने के बाद उन्हें फेंक देते हैं। विकास के दौरान तेजी से घूमने के साथ अनुभवों की तरह रिप वान विंकल न होने से हमें इस कोड को पुन: प्राप्त करने में लगने वाले समय को तौलना होगा।


वाह मुझे लगा कि 20 सेकंड का संकलन समय के लिए बहुत लंबा था।
जारेड अपडेटेड

यदि संभव हो तो कई समाधानों को सलाह देने की कोशिश करें, क्योंकि रिफैक्टरिंग इतना कठिन हो जाता है।
इयान रिंगरोस

आप दृश्य-स्टूडियो के बाहर वीएसएस का उपयोग कर सकते हैं, जिस तरह से आपको वीएसएस से बात करते हुए दृश्य-स्टूडियो का ओवरहेड नहीं मिलता है।
इयान रिंगरोस

संसाधनों के बारे में कैसे? मैं कल्पना कर सकता हूं कि वे इस प्रक्रिया को धीमा कर देंगे। मैंने वाणिज्यिक सॉफ़्टवेयर को exe फ़ाइलों के साथ देखा है सीडी का आकार जिसे आप सीडी से शुरू करते हैं (सेटअप नहीं)। वे वीडियो, ऑडियो और तस्वीरों से भरे थे। तो सॉफ्टवेयर सिर्फ यह एक फ़ाइल था ....
Bitterblue

जवाबों:


74

Chromium.org टीम ने बिल्ड में तेजी लाने के लिए कई विकल्प सूचीबद्ध किए हैं (इस बिंदु पर पृष्ठ के आधे रास्ते में):

स्पीडअप के घटते क्रम में:

  • Microsoft हॉटफिक्स 935225 स्थापित करें ।
  • Microsoft हॉटफिक्स 947315 स्थापित करें ।
  • एक सच्चे मल्टीकोर प्रोसेसर (यानी, एक इंटेल कोर डुओ 2 का उपयोग करें; पेंटियम 4 एचटी का नहीं)।
  • 3 समानांतर बिल्ड का उपयोग करें। विजुअल स्टूडियो 2005 में, आपको टूल्स> विकल्प ...> प्रोजेक्ट्स एंड सॉल्यूशन्स> बिल्ड और रन> अधिकतम संख्या में समानांतर प्रोजेक्ट बिल्ड में विकल्प मिलेगा ।
  • .Ilk, .pdb, .cc, .h फ़ाइलों के लिए अपने एंटी-वायरस सॉफ़्टवेयर को अक्षम करें और केवल संशोधित होने वाले वायरस की जाँच करें । उस निर्देशिका को स्कैन करना अक्षम करें जहां आपके स्रोत रहते हैं। कुछ भी बेवकूफी मत करो।
  • क्रोमियम कोड को दूसरी हार्ड ड्राइव पर स्टोर करें और उसका निर्माण करें। यह वास्तव में बिल्ड को गति नहीं देगा, लेकिन कम से कम आपका कंप्यूटर उत्तरदायी रहेगा जब आप gclient सिंक या बिल्ड बनाते हैं।
  • नियमित रूप से अपनी हार्ड ड्राइव को डीफ़्रैग्मेंट करें।
  • वर्चुअल मेमोरी को अक्षम करें।

30
वर्चुअल मेमोरी को निष्क्रिय करने से मेरा मतलब है कि आप स्वैप को अक्षम कर सकते हैं, वर्चुअल मेमोरी को अक्षम करने से पूरे ओएस को फिर से लिखना होगा; पी
जोसेफ गार्विन

9
यह ऐसा लगता है कि C ++ पर दिए गए उत्तर के अनुसार C # बिल्ड नहीं बनाता
Ian Ringrose

2
आप सही हे! हालाँकि मुझे यह इंगित करना चाहिए कि मैंने C # को निर्दिष्ट करने से पहले उत्तर दिया था, और कुछ सुधार अभी भी लागू होते हैं।
नैट

* SSD ड्राइव पर प्रोजेक्ट को स्टोर करें * विंडोज़ इंडेक्सिंग अक्षम करें (एक फ़ाइल मैनेजर में, राइट क्लिक सॉल्यूशन फोल्डर, प्रॉपर्टीज-> एडवांस, "फाइल अनुमति दें ... इंडेक्सेड ..." को
nos

+1 यदि आपके पास पर्याप्त रैम है तो वे रैम डिस्क में प्रोजेक्ट रखते हैं। यह 50-70% तक नाटकीय रूप से प्रदर्शन में सुधार कर सकता है। जाँच codeproject.com/Articles/197663/Speed-up-Visual-Studio-Builds अधिक जानकारी के लिए
अर्जुन Vachhani

58

हम एक समाधान में लगभग 100 परियोजनाओं और केवल सेकंड के एक देव का निर्माण समय :)

स्थानीय विकास के लिए हमने एक विजुअल स्टूडियो एडिन बनाया, जो अवांछित परियोजनाओं Project referencesको बदलता है DLL referencesऔर उतारता है (और उन्हें वापस पाठ्यक्रम में बदलने का एक विकल्प है)।

  • एक बार हमारे पूरे समाधान का निर्माण करें
  • वर्तमान में हम जिन परियोजनाओं पर काम नहीं कर रहे हैं, उन्हें उतारें और सभी परियोजना संदर्भों को DLL संदर्भों में बदलें।
  • चेक-इन से पहले सभी संदर्भ वापस DLL से प्रोजेक्ट संदर्भ के लिए।

हमारे निर्माण में अब केवल कुछ सेकंड लगते हैं जब हम एक समय में केवल कुछ परियोजनाओं पर काम कर रहे होते हैं। हम अभी भी अतिरिक्त परियोजनाओं को डीबग कर सकते हैं क्योंकि यह डीबग DLL के लिंक है। बड़ी संख्या में परिवर्तन करने के लिए उपकरण में आमतौर पर 10-30 सेकंड लगते हैं, लेकिन आपको अक्सर ऐसा नहीं करना पड़ता है।

मई 2015 को अपडेट करें

मैंने जो सौदा किया (नीचे टिप्पणियों में), वह यह था कि अगर मुझे पर्याप्त ब्याज मिलता है, तो मैं ओपन सोर्स के लिए प्लगइन जारी करूंगा । 4 साल बाद इसमें केवल 44 वोट हैं (और विजुअल स्टूडियो के पास अब दो बाद के संस्करण हैं), इसलिए यह वर्तमान में एक कम प्राथमिकता वाली परियोजना है।


2
साथ ही इस तकनीक का उपयोग किया, जिसमें 180 परियोजनाओं का समाधान था। इससे काफी मदद मिली। तुम भी पूरे समाधान का निर्माण करने के लिए कमांड लाइन का उपयोग कर सकते हैं `devenv.exe / निर्माण विचलन / takealookatthedoc`` ... तो आप केवल कुछ परियोजनाओं के साथ काम करते हैं, और जब आवश्यकता होती है, तो आप पूरे समाधान को एक cmd लाइन में (बाद में) छूट के लिए नवीनतम संस्करण प्राप्त करें)
स्टीव बी

क्या आपके पास कोई लिंक है जो यह बताता है कि यह कैसे किया जाता है? मेरा मतलब वी.एस. प्लगइन लिखना नहीं है। बल्कि, वर्णित विशिष्ट कार्य
डैनियल डायसन

@ डैनियल डायसन: आपको कितनी विस्तृत जानकारी की आवश्यकता है? यह सब 1 से नीचे आता है) किसी भी उतराई वाली परियोजनाओं को लोड करना 2) समाधान / परियोजना / संदर्भ पदानुक्रम 3 को पुनरावृत्त करना) अन्य परियोजनाओं के संदर्भ में परियोजनाओं को ढूंढना 4) DLL संदर्भों के लिए "चुने हुए" संदर्भों को बदलना (सही संकेत पथ के साथ फिर 5)। अवांछित परियोजनाओं को उतारना। "चुना" सामग्री मेनू (यानी चयनित प्रोजेक्ट्स) के माध्यम से या आइटम का चयन करने के लिए एक चेकबॉक्स ट्री के माध्यम से है।
कोडिंग किया

धन्यवाद। मुझे शुरू करने के लिए पर्याप्त होना चाहिए।
डैनियल डायसन

1
@HiTechMagic आह, यह सुनकर दुख हुआ। लेकिन हां, इसे मुक्त स्रोत के रूप में जारी करने का मतलब है कि हम सभी की मदद कर सकते हैं। यदि आप इसे जारी करते हैं तो कृपया यहाँ github लिंक पोस्ट करें।
georgiosd

24

मेरे पास 21 परियोजनाओं और 1/2 मिलियन एलओसी के साथ एक समाधान पर एक समान मुद्दा था। सबसे बड़ा अंतर तेजी से हार्ड ड्राइव हो रहा था। प्रदर्शन की निगरानी से 'औसत। डिस्क क्यू 'लैपटॉप पर काफी उछलती है जो दर्शाती है कि हार्ड ड्राइव बोतल की गर्दन थी।

यहाँ कुल पुनर्निर्माण बार के लिए कुछ डेटा है ...

1) लैपटॉप, कोर 2 डुओ 2GHz, 5400 RPM ड्राइव (कैश के बारे में निश्चित नहीं। मानक डेल इंस्पिरॉन था)।

पुनर्निर्माण समय = 112 सेकंड।

2) डेस्कटॉप (मानक मुद्दा), कोर 2 डुओ 2.3Ghz, सिंगल 7200RPM ड्राइव 8MB कैश।

पुनर्निर्माण समय = 72 सेकंड।

3) डेस्कटॉप कोर 2 डुओ 3Ghz, सिंगल 10000 RPM WD रैप्टर

पुनर्निर्माण समय = 39 सेकंड।

10,000 RPM ड्राइव को नहीं समझा जा सकता है। बनाता है जहाँ काफी जल्दी प्लस सब कुछ प्रलेखन प्रदर्शित करने की तरह, फ़ाइल एक्सप्लोरर का उपयोग ध्यान देने योग्य तेज था। यह कोड-बिल्ड-रन चक्र को तेज करके एक बड़ी उत्पादकता को बढ़ावा देने वाला था।

यह देखते हुए कि कंपनियां डेवलपर की सैलरी पर क्या खर्च करती हैं, यह पागल है कि वे रिसेप्शनिस्ट द्वारा उपयोग किए जाने वाले पीसी के साथ उन्हें खरीदने में कितना बर्बाद कर सकते हैं।


4
एक SSD रैपर की तुलना कैसे करेगा। और भी तेजी से मैं gues
RvdK

4
हाँ। एक इंटेल X25M के साथ मेरा लैपटॉप एक WD रैप्टर के साथ मेरे डेस्कटॉप की तुलना में सभी पहलुओं में तेज है।
सीएडी

4
यह आश्चर्यजनक लग सकता है, लेकिन यह वर्तमान में 10000 RPM ड्राइव में निवेश करने लायक नहीं है। कारण यह है कि बाहरी रिम पर 7200 आरपीएम ड्राइव बेहतर हैं। तो, जो कुछ करना चाहिए वह एक छोटा विभाजन बनाएं। पहला विभाजन बाहरी रिम पर है, यह विभाजन 7200 आरपीएम ड्राइव की तुलना में तेज होगा, साथ ही आपके पास चीजों को संग्रहीत करने के लिए दूसरे बड़े विभाजन के लिए अभी भी जगह है।
अंधेरा

2
@ कर्नेलियस: क्या मुझे एक लिंक मिल सकता है जो आपकी बात को विस्तृत कर दे? 7200 का बाहरी रिम की तुलना में केवल 7200 का बाहरी रिम तेजी से हो सकता है अगर 7200s त्रिज्या के लिए प्रवृत्त होते हैं, जो शायद हो सकता है, लेकिन वास्तव में यह चाल एक हैक की तरह होगा और लाभ प्रदान नहीं करेगा शेष हार्ड ड्राइव के भंडारण के लिए 7200 कि संतुलन त्रिज्या से नीचे है, जिस पर दो ड्राइव में समान वेग है।
मिटा दें

2
मैं कैडब्लूके के साथ हूं। हमने पिछले साल तक रैप्टर्स का उपयोग किया था जब मूल्य बिंदु एसएसडी पर कम हो गया था कि हम केवल अपने लैपटॉप / डेस्कटॉप में प्राथमिक ड्राइव के लिए एसएसडी का उपयोग करते हैं। गति में वृद्धि शानदार है और हमारे समाधानों को संकलित करने में कितना समय लगता है यह आसानी से सबसे बड़ा कारक है।
NotMe

16

C # .NET बिल्ड के लिए, आप .NET दानव का उपयोग कर सकते हैं । यह एक ऐसा उत्पाद है जो इसे तेज करने के लिए विजुअल स्टूडियो बिल्ड प्रोसेस को लेता है।

यह आपके द्वारा किए गए परिवर्तनों का विश्लेषण करके करता है, और केवल वही परियोजना बनाता है जिसे आपने वास्तव में बदला है, साथ ही अन्य परियोजनाएं जो वास्तव में आपके द्वारा किए गए परिवर्तनों पर निर्भर करती हैं। इसका मतलब है कि यदि आप केवल आंतरिक कोड बदलते हैं, तो केवल एक परियोजना के निर्माण की आवश्यकता है।


नहीं है कि क्या वी.एस. पहले से ही करता है? या आप का अर्थ है अप्रासंगिक परिवर्तन जैसे टिप्पणी आदि को छोड़ दिया जाता है?
नवफाल

1
Redgate ने दुर्भाग्यवश .net दानव पर काम करना बंद कर दिया है, इसलिए यह वीएस 2013 से ऊपर काम नहीं कर रहा है
रॉबर्ट इवांक

14

अपने एंटीवायरस को बंद करें। यह संकलन समय के लिए उम्र जोड़ता है।


2
... कोड / संकलन फ़ोल्डर के लिए। एवी सुरक्षा को कंबल-कवरेज नियम के रूप में बदलना एक शानदार विचार नहीं है। : ओ)
ब्रेट रिग्बी

5
आपको वास्तव में इसे बंद करने की आवश्यकता नहीं है, इसे ठीक से कॉन्फ़िगर करना आमतौर पर पर्याप्त है। कंपाइलर / लिंकर के साथ काम करने वाले फ़ाइल प्रकारों के अपवादों को जोड़ें। कुछ एंटीवायरस पैकेज में ये अपवाद डिफ़ॉल्ट रूप से जोड़े जाते हैं, कुछ नहीं।
डार्कलॉन

@ कर्नेलियस उचित एंटी-वायरस कॉन्फ़िगरेशन क्या है? क्या आप विवरण प्रदान कर सकते हैं? (शायद एक अलग सवाल में?)
पावेल रेड्ज़विलोव्स्की

@Pavel: खैर, उन फ़ाइल प्रकारों को बाहर करें, जो कंपाइलर C ++ के साथ काम करता है, जो कि .o, .pdb, .ilk, .lib, .cpp, .h जैसी चीजें होंगी। इसके अलावा, कुछ एंटीवायरस सॉफ़्टवेयर (उदाहरण के लिए। अविरा एंटीवायर) आपको पढ़ने, लिखने या दोनों पर फ़ाइलों को स्कैन करने की अनुमति देता है। रीड पर स्कैन करने के लिए इसे सेट करने से आपको 99% सुरक्षा मिलेगी।
डार्कन

12

वितरित संकलन का उपयोग करें। Xoreax IncrediBuild संकलन समय को कुछ मिनटों तक काट सकता है।

मैंने इसे एक विशाल C \ C ++ समाधान पर उपयोग किया है जिसे आमतौर पर संकलन में 5-6 घंटे लगते हैं। IncrediBuild ने इस समय को 15 मिनट तक कम करने में मदद की।


कई अतिरिक्त पीसी पर IncrediBuild स्थापित करना लगभग कोई प्रशासन के प्रयास के साथ हमारे C ++ प्रोजेक्ट के लिए कारक 10 या उससे अधिक के संकलन समय को कम कर देता है।
स्टिफ़ेल

उसी अनुभव aku था ... हालांकि लिंक अभी भी एक मुद्दा था हे
पॉल कैरोल

यदि आप इस मार्ग पर जा रहे हैं, तो बस एक जोड़ी समर्पित बिल्ड सर्वर काम करेगा। हालांकि ऐसा लगता है कि ओपी स्थानीय देव मशीनों पर निर्माण समय को ठीक करने की कोशिश कर रहा था।
NotMe

11

अपने दृश्य स्टूडियो को कम करने के लिए निर्देश कुछ सेकंड के लिए संकलित करें

विज़ुअल स्टूडियो दुर्भाग्य से असंगत नहीं है कि असंगत कोड बॉडी परिवर्तनों से विधानसभा के इंटरफ़ेस परिवर्तनों को अलग कर सके। यह तथ्य, जब एक बड़े intertwined समाधान के साथ संयुक्त, कभी-कभी अवांछित 'पूर्ण-बिल्ड' का एक आदर्श तूफान बना सकता है लगभग हर बार जब आप कोड की एक पंक्ति को बदलते हैं।

इसे दूर करने की रणनीति स्वचालित संदर्भ-ट्री बिल्ड को अक्षम करना है। ऐसा करने के लिए, 'कॉन्फ़िगरेशन मैनेजर' (बिल्ड / कॉन्फ़िगरेशन मैनेजर ... का उपयोग करें ... फिर सक्रिय समाधान कॉन्फ़िगरेशन ड्रॉपडाउन में, 'नया' चुनें) 'मैनुअलकंपाइल' नामक एक नया बिल्ड कॉन्फ़िगरेशन बनाने के लिए, जो डीबग कॉन्फ़िगरेशन से प्रतिलिपि बनाता है, लेकिन करें 'नया प्रोजेक्ट कॉन्फ़िगरेशन बनाएँ' चेकबॉक्स न देखें। इस नए बिल्ड कॉन्फ़िगरेशन में, प्रत्येक प्रोजेक्ट को अनचेक करें ताकि उनमें से कोई भी स्वचालित रूप से निर्माण न करे। इस कॉन्फ़िगरेशन को 'बंद' दबाकर सहेजें। यह नया बिल्ड कॉन्फ़िगरेशन आपकी समाधान फ़ाइल में जोड़ा जाता है।

आप अपनी IDE स्क्रीन के शीर्ष पर बिल्ड कॉन्फ़िगरेशन ड्रॉपडाउन के माध्यम से एक बिल्ड कॉन्फ़िगरेशन से दूसरे में स्विच कर सकते हैं (वह जो आमतौर पर 'डीबग' या 'रिलीज़' दिखाता है)। प्रभावी रूप से यह नया मैन्युअलकंपाइल बिल्ड कॉन्फ़िगरेशन बेकार मेनू के लिए विकल्प प्रस्तुत करेगा: 'बिल्ड समाधान' या 'पुनर्निर्माण समाधान'। इस प्रकार, जब आप मैन्युअलकंपाइल मोड में होते हैं, तो आपको मैन्युअल रूप से प्रत्येक प्रोजेक्ट का निर्माण करना होगा जिसे आप संशोधित कर रहे हैं, जो कि समाधान एक्सप्लोरर में प्रत्येक प्रभावित परियोजना पर राइट-क्लिक करके किया जा सकता है, और फिर 'बिल्ड' या 'पुनर्निर्माण' का चयन कर सकता है। आपको यह देखना चाहिए कि आपका समग्र संकलन समय अब ​​केवल कुछ सेकंड का होगा।

काम करने की इस रणनीति के लिए, यह आवश्यक है कि असेंबलीइन्फो और GlobalAssemblyInfo फ़ाइलों में वर्जननंबर पाया जाए जो डेवलपर की मशीन पर स्थिर बने रहें (रिलीज बिल्ड के दौरान बिल्कुल नहीं), और यह कि आप अपने डीएलएल पर हस्ताक्षर नहीं करते हैं।

इस ManualCompile रणनीति का उपयोग करने का एक संभावित जोखिम यह है कि डेवलपर आवश्यक परियोजनाओं को संकलित करना भूल सकता है, और जब वे डीबगर शुरू करते हैं, तो उन्हें अप्रत्याशित परिणाम मिलते हैं (डिबगर संलग्न करने में असमर्थ, फ़ाइलें नहीं मिली, आदि)। इससे बचने के लिए, संभवतः एक बड़े कोडिंग प्रयास को संकलित करने के लिए 'डीबग' बिल्ड कॉन्फ़िगरेशन का उपयोग करना सबसे अच्छा है, और केवल यूनिट परीक्षण के दौरान या सीमित दायरे के त्वरित परिवर्तन करने के लिए मैनुअलकंपाइल बिल्ड कॉन्फ़िगरेशन का उपयोग करें।


8

यदि यह C या C ++ है, और आप precompiled हेडर का उपयोग नहीं कर रहे हैं, तो आपको होना चाहिए।


यदि पूर्व-संकलित हेडर आपके लिए काम करते हैं, तो वे एक अच्छी चाल हैं, लेकिन वे केवल तभी काम करते हैं जब आप हेडर के एक मजबूत सामान्य सबसेट को स्थापित कर सकते हैं जो शायद ही कभी बदलते हैं। यदि आप अपने द्वारा बनाए जाने वाले अधिकांश समय हेडर को रखना चाहते हैं, तो आप कुछ भी नहीं बचा रहे हैं।
टॉम स्विरली

7

हमारे मुख्य समाधान में 80+ परियोजनाएं थीं, जो एक डेवलपर किस तरह की मशीन पर काम कर रहा था, इसके आधार पर बनाने में लगभग 4 से 6 मिनट लगते थे। हमने माना कि बहुत लंबा रास्ता तय करना: हर एक परीक्षण के लिए यह वास्तव में आपके एस्ट्रोन को खा जाता है।

तो तेजी से निर्माण समय कैसे प्राप्त करें? जैसा कि आप पहले से ही जानते हैं कि यह उन परियोजनाओं की संख्या है जो वास्तव में बिल्डटाइम को नुकसान पहुंचाते हैं। बेशक हम अपनी सभी परियोजनाओं से छुटकारा नहीं चाहते थे और बस सभी सोर्सफाइल्स को एक में फेंक देते थे। लेकिन हमारे पास कुछ परियोजनाएँ थीं जिन्हें हम फिर भी जोड़ सकते थे: जैसा कि समाधान में प्रत्येक "रिपॉजिटरी प्रोजेक्ट" की अपनी सबसे बड़ी परियोजना थी, हमने बस सभी एकतरफा परियोजनाओं को एक वैश्विक-एकतरफा परियोजना में मिला दिया। इसने लगभग 12 परियोजनाओं के साथ परियोजनाओं की संख्या में कटौती की और किसी तरह पूरे समाधान के निर्माण में 40% समय बचाया।

हम हालांकि एक और समाधान के बारे में सोच रहे हैं।

क्या आपने एक नई परियोजना के साथ एक नया (दूसरा) समाधान स्थापित करने की कोशिश की है? यह दूसरा समाधान केवल समाधान फ़ोल्डर्स का उपयोग करके सभी फ़ाइलों को शामिल करना चाहिए। क्योंकि आप उस नए समाधान के निर्माण के समय को देखकर हैरान हो सकते हैं।

हालांकि, दो अलग-अलग समाधानों के साथ काम करने में कुछ सावधानी बरती जाएगी। डेवलपर्स वास्तव में काम करने के लिए इच्छुक हो सकते हैं- दूसरे समाधान में और पहले की पूरी तरह से उपेक्षा करें। जैसा कि 70+ परियोजनाओं के साथ पहला समाधान वह समाधान होगा जो आपकी वस्तु-पदानुक्रम का ख्याल रखता है, यह समाधान होना चाहिए जहां आपके निर्माता को आपके सभी unittests चलाना चाहिए। तो कंटीन्यूअस इंटीग्रेशन का सर्वर पहला प्रोजेक्ट / समाधान होना चाहिए। आपको अपना ऑब्जेक्ट-पदानुक्रम बनाए रखना होगा, सही।

सिर्फ एक परियोजना के साथ दूसरा समाधान (जो बहुत तेजी से निर्माण करेगा) उस परियोजना की तुलना में जहां सभी डेवलपर्स द्वारा परीक्षण और डिबगिंग किया जाएगा। हालांकि बिल्डरों को देखते हुए आपको उनका ध्यान रखना होगा! अगर कुछ भी टूटता है तो उसे ठीक किया जाना चाहिए।


7

सुनिश्चित करें कि आपके संदर्भ प्रोजेक्ट संदर्भ हैं, और लाइब्रेरी आउटपुट निर्देशिका में सीधे DLLs के लिए नहीं।

इसके अलावा, जहां आवश्यक हो (स्थानीय मास्टर परियोजना) को छोड़कर, स्थानीय रूप से कॉपी न करने के लिए ये सेट करें।


क्या आप बता सकते हैं कि यह तेज क्यों है? "प्रोजेक्ट संदर्भ" से तात्पर्य प्रोजेक्ट बिल्डिंग से है (जो कि प्रत्यक्ष DLL संदर्भ से बहुत धीमी है)।
कोडिंग

6

मैंने यह प्रतिक्रिया मूल रूप से यहां पोस्ट की है: /programming/8440/visual-studio-optimifications#8473 आप उस पृष्ठ पर कई अन्य सहायक संकेत पा सकते हैं।

यदि आप Visual Studio 2008 का उपयोग कर रहे हैं, तो आप समानांतर में एकल प्रोजेक्ट बनाने के लिए / MP ध्वज का उपयोग कर संकलन कर सकते हैं। मैंने पढ़ा है कि यह विजुअल स्टूडियो 2005 में एक अनकम्फर्टेबल फीचर भी है, लेकिन मैंने कभी खुद को आजमाया नहीं है।

आप / M ध्वज का उपयोग करके समानांतर में कई प्रोजेक्ट बना सकते हैं, लेकिन यह आमतौर पर मशीन पर उपलब्ध कोर की संख्या के लिए पहले से ही सेट है, हालांकि यह केवल VC ++ पर लागू होता है।


1
सावधान रहे। 2008 में एक बग है जो ट्रंकट्स बनाता है। MS का कहना है कि वे vs2010 तक ठीक नहीं होंगे। यह एक भयानक मुद्दा है, क्योंकि यह .obj फ़ाइलों को लगातार भ्रमित करने वाली समस्याएँ पैदा करता है। आपको चेतावनी दी गई है। ;) social.msdn.microsoft.com/forums/en-US/vcgeneral/thread/…
जस्टिन

6

मैंने देखा कि यह प्रश्न सदियों पुराना है, लेकिन विषय आज भी दिलचस्पी का है। एक ही समस्या मुझे हाल ही में थोड़ा, और दो चीजें हैं जो प्रदर्शन में सुधार का निर्माण किया सबसे अधिक थे (1) संकलन के लिए एक समर्पित (और तेजी से) डिस्क का उपयोग करें और (2) सभी परियोजनाओं के लिए एक ही outputfolder का उपयोग करें, और प्रोजेक्ट के लिए CopyLocal को गलत पर सेट करें संदर्भ।

कुछ अतिरिक्त संसाधन:


5

कुछ विश्लेषण उपकरण:

उपकरण-> विकल्प-> वीसी ++ प्रोजेक्ट सेटिंग्स -> बिल्ड टाइमिंग = हां आपको हर vcproj के लिए समय बनाने के लिए बताएगा।

/Btकंपाइलर कमांड लाइन पर स्विच जोड़ें यह देखने के लिए कि प्रत्येक CPP फ़ाइल ने कितना लिया

/showIncludesनेस्टेड पकड़ने के लिए उपयोग करें (हेडर फाइलें जिसमें अन्य हेडर फाइलें शामिल हैं), और देखें कि कौन सी फाइलें आगे की घोषणाओं का उपयोग करके बहुत सारे आईओ को बचा सकती हैं।

यह निर्भरता और प्रदर्शन हॉग को समाप्त करके संकलक प्रदर्शन को अनुकूलित करने में आपकी सहायता करेगा।


5

तेज हार्ड ड्राइव में निवेश करने के लिए पैसे खर्च करने से पहले, अपनी परियोजना को पूरी तरह से एक रैम डिस्क पर बनाने की कोशिश करें (यह मानते हुए कि आपके पास रैम को छोड़ना है)। आप नेट पर विभिन्न फ्री रैम डिस्क ड्राइवर पा सकते हैं। आपको SSDs सहित कोई भी भौतिक ड्राइव नहीं मिलेगा, जो RAM डिस्क से अधिक तेज़ हैं।

मेरे मामले में, Incredibuild के साथ 7200 RPM SATA ड्राइव पर 6-कोर i7 पर बनाने में 5 मिनट का एक प्रोजेक्ट रैम डिस्क का उपयोग करके केवल 15 सेकंड के लिए कम हो गया था। स्थायी भंडारण और खोए हुए काम के लिए क्षमता की आवश्यकता पर विचार करते हुए, रैम डिस्क का उपयोग करने के लिए 15 सेकंड पर्याप्त प्रोत्साहन नहीं है और शायद उच्च-आरपीएम या एसएसडी ड्राइव पर कई सैकड़ों डॉलर खर्च करने के लिए बहुत अधिक प्रोत्साहन नहीं है।

छोटा लाभ यह संकेत दे सकता है कि बिल्ड सीपीयू बाध्य था या विंडोज फ़ाइल कैशिंग बल्कि प्रभावी था, लेकिन चूंकि दोनों परीक्षण एक ऐसे राज्य से किए गए थे जहां फाइलें कैश नहीं हुई थीं, इसलिए मैं सीपीयू-बाउंड कंपाइल की ओर बहुत अधिक झुक गया।

वास्तविक कोड के आधार पर आप अपना माइलेज अलग-अलग कर सकते हैं - इसलिए परीक्षण करने में संकोच न करें।


रैम डिस्क मेरे अनुभव में वीएस का निर्माण करने में मदद नहीं करते हैं, और वे एक दर्द हैं क्योंकि आपको हर बार उन्हें अपने कंप्यूटर को रिबूट या क्रैश करने के लिए फिर से बनाना होगा। ब्लॉग पोस्ट यहाँ देखें: josephfluckiger.blogspot.com/2009/02/…
BrokeMyLegBiking

3

पूर्ण निर्माण करने के बाद आपकी बिल्ड निर्देशिका कितनी बड़ी है? यदि आप डिफ़ॉल्ट सेटअप के साथ चिपके रहते हैं, तो आपके द्वारा बनाई गई प्रत्येक असेंबली उसकी निर्भरता के सभी DLL और उसकी निर्भरता की निर्भरता आदि की प्रतिलिपि बना देगी। मेरी पिछली नौकरी में ~ 40 परियोजनाओं के समाधान के साथ काम करते समय मेरे सहयोगियों ने पाया कि निर्माण प्रक्रिया का सबसे महंगा हिस्सा इन विधानसभाओं को बार-बार कॉपी कर रहा था, और यह कि एक ही निर्माण में एक ही DLL की प्रतियों की गीगाबाइट उत्पन्न हो सकती है। एक बार फिर।

पैट्रिक स्मैकिया, एनडिपेंडेंट के लेखक की कुछ उपयोगी सलाह यहाँ दी गई है, जो मानते हैं कि उन्हें अलग-अलग विधानसभाओं में नहीं होना चाहिए:

http://codebetter.com/patricksmacchia/2008/12/08/advices-on-partitioning-code-through-net-assemblies/

मूल रूप से दो तरीके हैं जिनसे आप इसके आसपास काम कर सकते हैं, और दोनों में कमियां हैं। एक विधानसभाओं की संख्या को कम करना है, जो स्पष्ट रूप से बहुत काम है। एक और अपनी बिल्ड निर्देशिकाओं का पुनर्गठन करना है ताकि आपके सभी बिन फ़ोल्डर समेकित हो जाएं और परियोजनाएं उनकी निर्भरता के डीएलएल की नकल न करें - उन्हें इसकी आवश्यकता नहीं है क्योंकि वे सभी एक ही निर्देशिका में पहले से ही हैं। यह नाटकीय रूप से बिल्ड के दौरान बनाई और कॉपी की गई फ़ाइलों की संख्या को कम करता है, लेकिन इसे स्थापित करना मुश्किल हो सकता है और पैकेजिंग के लिए एक विशिष्ट निष्पादन योग्य द्वारा केवल DLL को बाहर निकालने में कुछ कठिनाई के साथ आपको छोड़ सकता है।


मैंने नौकरी छोड़ दी है कि यह थोड़ी देर के लिए एक मुद्दा था, लेकिन मेरी नई स्थिति में, यह वही है जो हमने लागू किया है! चीयर्स। जे.सी.
johnc

2

शायद कुछ सामान्य कार्य करते हैं और कुछ पुस्तकालय बनाते हैं, इस तरह एक ही स्रोतों को कई परियोजनाओं के लिए बार-बार संकलित नहीं किया जा रहा है।

यदि आप DLL के विभिन्न संस्करणों के मिश्रित होने से चिंतित हैं, तो स्थैतिक पुस्तकालयों का उपयोग करें।


DLL (और इसके विभिन्न चचेरे भाई साझा पुस्तकालयों को पसंद करते हैं) आज एप्लिकेशन डेवलपर के लिए लगभग हमेशा एक बुरा विचार है। निष्पादन योग्य छोटे होते हैं, भले ही आप उपयोग की जाने वाली प्रत्येक अंतिम लाइब्रेरी में लिंक करते हों और कोड को साझा करके आपके द्वारा सेव की गई मेमोरी की मात्रा भी छोटी हो। DLLs उन दिनों में वापस आ जाते हैं जब मेमोरी और डिस्क में प्रोग्राम कोड फ़ुटप्रिंट महत्वपूर्ण महत्व रखता था, लेकिन डेटा का आकार, मेमोरी और डिस्क का आकार कार्यक्रमों के आकार की तुलना में बहुत तेज़ी से बढ़ा है।
टॉम स्विरली

2

VSS एकीकरण बंद करें। आपके पास इसका उपयोग करने का विकल्प नहीं हो सकता है, लेकिन DLL को हर समय "गलती से" नाम दिया जाता है ...

और अपने पूर्व-संकलित हेडर सेटिंग्स को जरूर देखें। ब्रूस डॉसन का गाइड थोड़ा पुराना है, लेकिन फिर भी बहुत अच्छा है - इसे देखें : http://www.cygnus-software.com/papers/precompiledheaders.html


निश्चित रूप से हम VSS के एकीकरण को बंद कर सकते हैं और इसे स्रोत सुरक्षित UI के माध्यम से चला सकते हैं। अच्छा लगा
जॉन्क

2

मेरे पास एक प्रोजेक्ट है जिसमें 120 या उससे अधिक एक्सईएस, लिबास और डीएलएस हैं और निर्माण में काफी समय लगता है। मैं बैच फ़ाइलों का एक पेड़ का उपयोग करता हूं जो कॉल करता है एक मास्टर बैच फ़ाइल से फाइल बनाता है। मुझे पिछले समय में वृद्धिशील चीजों से समस्याएँ हुईं (या यह मनमौजी था) हेडर था इसलिए अब मैं उनसे बचता हूँ। मैं पूरी तरह से निर्माण करता हूं, और आमतौर पर इसे दिन के अंत तक छोड़ देता हूं, जबकि मैं एक घंटे के लिए टहलने जाता हूं (इसलिए मैं केवल अनुमान लगा सकता हूं कि इसमें लगभग आधे घंटे लगते हैं)। तो मैं समझता हूं कि काम करने और परीक्षण के लिए यह क्यों नहीं है।

काम करने और परीक्षण के लिए मेरे पास प्रत्येक ऐप (या मॉड्यूल या लाइब्रेरी) के लिए बैच फ़ाइलों का एक और सेट है, जिसमें सभी डिबगिंग सेटिंग्स भी हैं - लेकिन ये अभी भी एक ही फाइल बनाते हैं। मैं समय-समय पर DEBUG को बंद कर सकता हूं और यह भी बनाता है या बनाता है या अगर मैं भी उन कामों का निर्माण करना चाहता हूं जो मॉड्यूल पर निर्भर हो सकते हैं, और इसी तरह।

बैच फ़ाइल पूर्ण परिणामों को (या कई) परीक्षण फ़ोल्डरों में कॉपी करती है। सेटिंग्स के आधार पर यह कई सेकंड में एक मिनट तक पूरा होता है (जैसा कि आधे घंटे कहने के लिए)।

मैंने एक अलग आईडीई (ज़ीउस) का उपयोग किया क्योंकि मुझे चीजों पर नियंत्रण करना पसंद है जैसे कि .rc फाइलें, और वास्तव में कमांड लाइन से संकलन करना पसंद करते हैं, भले ही मैं एमएस कंपाइलर का उपयोग कर रहा हूं।

अगर कोई दिलचस्पी रखता है तो इस बैच फ़ाइल का एक उदाहरण पोस्ट करने में खुशी होगी।


2

अपने स्रोत निर्देशिकाओं पर फ़ाइल सिस्टम अनुक्रमणिका को अक्षम करें (यदि आप अपने स्रोत का पता लगाना चाहते हैं तो विशेष रूप से obj निर्देशिकाएं)



1

आप सर्कुलर प्रोजेक्ट रेफरेंस के लिए भी जांच कर सकते हैं। एक बार मेरे लिए यह एक मुद्दा था।

अर्थात्:

प्रोजेक्ट ए संदर्भ प्रोजेक्ट बी

प्रोजेक्ट बी संदर्भ प्रोजेक्ट सी

प्रोजेक्ट C संदर्भ प्रोजेक्ट A


1
यदि ऐसा होता, तो समाधान कभी संकलित नहीं होता।
माइकल

@Michael यह संकलित करेगा यदि आप प्रोजेक्ट संदर्भ का उपयोग करने के बजाय डीबग निर्देशिका में dll का संदर्भ लेंगे।
कालेब जेरेस

1

Xoreax IB का एक सस्ता विकल्प है कि मैं uber-file बिल्ड का उपयोग करता हूं। यह मूल रूप से एक .cpp फ़ाइल है

#include "file1.cpp"
#include "file2.cpp"
....
#include "fileN.cpp"

फिर आप व्यक्तिगत मॉड्यूल के बजाय uber इकाइयों को संकलित करते हैं। हमने 10-15 मिनट से लेकर 1-2 मिनट तक के संकलन को देखा है। आप अनुभव कर सकते हैं कि कितने # ublud प्रति uber फ़ाइल से समझ में आता है। परियोजनाओं पर निर्भर करता है। आदि हो सकता है कि आप 10 फाइलें शामिल करें, शायद 20।

आप लागत का भुगतान करते हैं इसलिए सावधान रहें:

  1. आप किसी फ़ाइल को राइट क्लिक नहीं कर सकते हैं और "कंपाइल ..." कह सकते हैं क्योंकि आपको बिल्ड से अलग-अलग cpp फ़ाइलों को बाहर करना होगा और केवल uber cpp फ़ाइलों को शामिल करना होगा
  2. आपको स्थिर वैश्विक चर संघर्षों से सावधान रहना होगा।
  3. जब आप नए मॉड्यूल जोड़ते हैं, तो आपको uber फ़ाइलों को अद्यतित रखना होगा

यह एक दर्द की तरह है, लेकिन एक परियोजना के लिए जो नए मॉड्यूल के मामले में काफी हद तक स्थिर है, आंतरिक दर्द इसके लायक हो सकता है। मैंने देखा है कि यह विधि कुछ मामलों में आईबी को हरा देती है।


1

यदि यह C ++ प्रोजेक्ट है, तो आपको पहले से तैयार हेडर का उपयोग करना चाहिए। यह संकलन के समय में एक बड़ा अंतर बनाता है। यह निश्चित नहीं है कि वास्तव में cl.exe क्या कर रहा है (precompiled हेडर का उपयोग नहीं करने के साथ), यह सही स्थान पर जाने से पहले सभी गलत स्थानों में बहुत सारे STL हेडर की तलाश कर रहा है। यह संकलित होने वाली हर एक .cpp फ़ाइल में पूरे सेकंड जोड़ता है। यकीन नहीं होता कि यह एक cl.exe बग है, या VS2008 में किसी प्रकार की STL समस्या है।


1

जिस मशीन पर आप निर्माण कर रहे हैं, उसे देखते हुए, क्या यह बेहतर तरीके से कॉन्फ़िगर किया गया है?

हमें सिर्फ 19 घंटे से 16 मिनट तक हमारे सबसे बड़े सी ++ एंटरप्राइज-स्केल उत्पाद के लिए अपना निर्माण समय मिला सही SATA फ़िल्टर ड्राइवर स्थापित करने के लिए केवल ।

सूक्ष्म।


ड्राइव की गति निश्चित रूप से एक योगदान कारक है
johnc

जानबूझकर कॉन्फ़िगर नहीं किया गया। 2 जीबी रैम के साथ शुरू करने के लिए बहुत कम रास्ता है।
टॉम टॉम

1

विजुअल स्टूडियो 2005 में अनजाने / एमपी स्विच है, http://lahsiv.net/blog/?p=40 देखें , जो प्रोजेक्ट आधार के बजाय फ़ाइल आधार पर समानांतर संकलन को सक्षम करेगा। यह अंतिम परियोजना के संकलन में तेजी ला सकता है, या, यदि आप एक परियोजना को संकलित करते हैं।


1

सीपीयू चुनते समय: L1 कैश आकार का संकलन समय पर बहुत अधिक प्रभाव पड़ता है। इसके अलावा, आमतौर पर 4 धीमे की तुलना में 2 तेज कोर होना बेहतर होता है। विजुअल स्टूडियो बहुत प्रभावी ढंग से अतिरिक्त कोर का उपयोग नहीं करता है। (मैं इसे C ++ कंपाइलर के साथ अपने अनुभव पर आधारित करता हूं, लेकिन यह संभवतः C # एक के लिए भी सही है।)


1

मैं भी अब आश्वस्त हूँ कि VS2008 के साथ एक समस्या है। मैं इसे 3 जी रैम के साथ एक दोहरे कोर इंटेल लैपटॉप पर चला रहा हूं, जिसमें एंटी-वायरस स्विच है। समाधान को संकलित करना अक्सर काफी धीमा होता है, लेकिन अगर मैं बाद के रेम्पाइल को डिबग कर रहा हूं, तो अक्सर क्रॉल धीमा हो जाएगा। यह निरंतर मुख्य डिस्क लाइट से स्पष्ट है कि एक डिस्क I / O अड़चन है (आप इसे सुन सकते हैं, भी)। अगर मैं बिल्ड को रद्द करता हूं और वीएस को बंद करता है तो डिस्क गतिविधि बंद हो जाती है। वीएस को पुनरारंभ करें, समाधान को फिर से लोड करें और फिर पुनर्निर्माण करें, और यह बहुत तेज है। अगली बार Unitl

मेरा विचार है कि यह एक मेमोरी पेजिंग मुद्दा है - VS सिर्फ मेमोरी से बाहर निकलता है और O / S पेज को स्पेस बनाने की कोशिश करने के लिए स्वैप करना शुरू कर देता है लेकिन VS पेज स्वैपिंग डिलीवर करने से ज्यादा डिमांड कर रहा है, इसलिए यह क्रॉल तक धीमा हो जाता है। मैं किसी अन्य स्पष्टीकरण के बारे में नहीं सोच सकता।

वी.एस. निश्चित रूप से एक आरएडी उपकरण नहीं है, क्या यह है?


मुझे
वीएस 200 के

1

क्या आपकी कंपनी किसी भी मौके पर अपने PKI / एन्क्रिप्शन समाधान के लिए Entrust का उपयोग करने के लिए होती है? यह पता चला है, हम C # में निर्मित काफी बड़ी वेबसाइट के लिए abysmal बिल्ड प्रदर्शन कर रहे थे, एक पुनर्निर्माण-सभी पर 7+ मिनट ले रहे थे।

मेरी मशीन 16gb रैम और 512GB SSD के साथ i7-3770 है, इसलिए प्रदर्शन उतना बुरा नहीं होना चाहिए। मैंने देखा कि मेरे निर्माण का समय एक समान कोडबेस बनाने वाली एक पुरानी माध्यमिक मशीन पर बहुत तेजी से था। इसलिए मैंने दोनों मशीनों पर ProcMon को निकाल दिया, बिल्ड को प्रोफाइल किया और परिणामों की तुलना की।

लो और निहारना, धीमी गति से प्रदर्शन करने वाली मशीन में एक अंतर था - स्टैकट्रेस में Entrust.dll का संदर्भ। इस नई अधिग्रहीत जानकारी का उपयोग करते हुए, मैंने StackOverflow की खोज जारी रखी और यह पाया: MSBUILD (VS2010) कुछ मशीनों पर बहुत धीमा है । स्वीकृत उत्तर के अनुसार समस्या इस तथ्य में निहित है कि Entrust हैंडलर मूल Microsoft हैंडलर के बजाय .NET प्रमाण पत्र की जाँच कर रहा था। Tt भी सुझाव दिया है कि Entrust v10 इस मुद्दे को हल करता है जो कि Entrust 9 में प्रचलित है।

वर्तमान में मैंने इसकी स्थापना रद्द कर दी है और मेरा निर्माण समय 24 सेकंड तक गिर गया है । YYMV उन परियोजनाओं की संख्या के साथ जो आप वर्तमान में बना रहे हैं और सीधे उस स्केलिंग मुद्दे को संबोधित नहीं कर सकते हैं जिसके बारे में आप पूछताछ कर रहे थे। मैं इस प्रतिक्रिया के लिए एक संपादन पोस्ट करूंगा, अगर मैं सॉफ्टवेयर की स्थापना रद्द करने का सहारा लिए बिना एक फिक्स प्रदान कर सकता हूं ।


0

यह सुनिश्चित है कि VS2008 के साथ कोई समस्या है। क्योंकि मैंने अपने प्रोजेक्ट को अपग्रेड करने के लिए VS2008 को स्थापित करने के लिए केवल वही किया है जो VS2005 के साथ बनाया गया है। मुझे अपने समाधान में केवल 2 प्रोजेक्ट मिले हैं। यह बड़ा नहीं है। VS2005 के साथ संकलन: VS2008 के साथ 30 सेकंड का संकलन: 5 मिनट


वहाँ एक और मुद्दा होना चाहिए, 2 परियोजनाओं को एक सभ्य मशीन पर ठीक चलना चाहिए
जॉन्क

0

अच्छे सुझाव जो अब तक मदद करते हैं (यह कहते हुए कि नीचे अन्य अच्छे सुझाव नहीं हैं, यदि आपके पास समस्याएं हैं, तो मैं आपको पढ़ने की सलाह देता हूं, बस हमारी मदद की है)

  • नया 3GHz लैपटॉप - खो उपयोग की शक्ति प्रबंधन के लिए जब अद्भुत काम करता है
  • संकलन के दौरान एंटी वायरस को अक्षम करें
  • संकलन के दौरान वीएसएस (वास्तव में नेटवर्क) से 'डिस्कनेक्ट' - मैं वीएस-वीएसएस एकीकरण को पूरी तरह से हटाने के लिए हमें प्राप्त कर सकता हूं और वीएसएस यूआई का उपयोग करने के लिए छड़ी कर सकता हूं

फिर भी एक संकलन के माध्यम से चीर-सूंघ नहीं, लेकिन हर बिट मदद करता है।

हम नए समाधानों में एप्लिकेशन के नए क्षेत्रों के निर्माण के अभ्यास का भी परीक्षण कर रहे हैं, आवश्यकतानुसार नवीनतम dlls में आयात कर रहे हैं, उन्हें बड़े समाधान में एकीकृत करते हैं जब हम उनसे खुश होते हैं।

हम अस्थायी समाधान बनाकर उन्हें मौजूदा कोड के समान भी कर सकते हैं जो उन क्षेत्रों को कूटबद्ध करते हैं जिन पर हमें काम करने की आवश्यकता होती है, और कोड को फिर से स्थापित करने के बाद उन्हें फेंक देते हैं। विकास के दौरान तेजी से घूमने के साथ अनुभवों की तरह रिप वान विंकल न होने से हमें इस कोड को पुन: प्राप्त करने में लगने वाले समय को तौलना होगा।

ओरियन ने एक टिप्पणी में उल्लेख किया कि जेनरिक में एक नाटक भी हो सकता है। मेरे परीक्षणों से प्रतीत होता है कि एक न्यूनतम प्रदर्शन हिट है, लेकिन यह सुनिश्चित करने के लिए पर्याप्त उच्च नहीं है - डिस्क गतिविधि के कारण संकलन समय असंगत हो सकता है। समय सीमाओं के कारण, मेरे परीक्षणों में कई जेनरिक, या उतने कोड शामिल नहीं थे, जितने कि लाइव सिस्टम में दिखाई देंगे, ताकि जमा हो सके। मैं जेनरिक का उपयोग करने से बचना नहीं चाहूँगा जहाँ उनका उपयोग किया जाना है, बस संकलन समय प्रदर्शन के लिए

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.