आप किस चीज के लिए अनुकूलन करते हैं? [बन्द है]


19

सामान्यतया, सॉफ्टवेयर डिजाइन करते समय आप किस प्रकार के अनुकूलन करते हैं?

क्या आप वह प्रकार हैं जो आपके डिज़ाइन को ऑप्टिमाइज़ करना पसंद करते हैं

  • विकास का समय (यानी, लिखने के लिए त्वरित और / या आसान बनाए रखने के लिए)?
  • प्रसंस्करण समय
  • भंडारण (या तो रैम, DB, डिस्क, आदि) स्थान

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


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

जवाबों:


40

रखरखाव

फिर प्रोफाइलिंग यदि आवश्यक हो और गति के लिए अनुकूलित करें। शायद ही कभी मुझे भंडारण की आवश्यकता होती है - कम से कम पिछले 10 वर्षों में नहीं। उससे पहले मैंने किया था।


8
+1, यदि आप शुरू करने के लिए रखरखाव के लिए अनुकूलन करते हैं, तो बाद में गति या भंडारण के लिए अनुकूलित करना आसान होगा यदि यह आवश्यक साबित होता है।
कार्सॉन 63000

आपको अभी भी कम से कम प्रसंस्करण समय और भंडारण पर विचार करने की आवश्यकता है ताकि आप एक अत्यधिक अत्यधिक दृष्टिकोण न चुनें।

@ Thorbjørn, यदि आप डेवलपर समय के लिए अनुकूलन कर रहे हैं, तो आप शायद (संभावना से अधिक) उन एलगोरिटम्स को चुनें जो किसी दिए गए भाषा में पढ़ने / लिखने में आसान हैं। केवल बाद में, और केवल अगर प्रदर्शन एक मुद्दा बन जाता है, तो क्या आप दोनों को (जैसा कि @Tim ने कहा था) एक प्रोफाइल लेने वाला होगा।
जेसन व्हाइटहॉर्न

@ जेसन, मैं दृढ़ता से असहमत हूं। आपके द्वारा चुने गए एल्गोरिदम की प्रदर्शन विशेषताओं से आपको परिचित होना चाहिए ताकि आप एक अनुकूल कार्यान्वयन चुनें। यानी जब आपको मुख्य रूप से ज़िप-कोड देखने की आवश्यकता हो, तो एक ArrayList का चयन करना संभव नहीं है।

1
@ Thorbjørn, मैं आपसे असहमत नहीं हूं। वास्तव में, मुझे लगता है कि आप इस बात में सही हैं कि हाथ में एल्गोरिदम पर ध्यान दिया जाना चाहिए। हालाँकि, मुझे लगता है कि जहाँ हम राय में भिन्न होते हैं, वह यह है कि मेरी राय में एल्गोरिदम को चुनने का विचार अनुभव के माध्यम से कुछ सीखा जाता है, और केवल तभी निर्धारित किया जाता है जब कोई समस्या स्वयं प्रस्तुत करती है। आप अपनी बात में सही हैं, मुझे कोड को लागू करने के लिए कम पठनीय / लंबे समय तक खर्च करने की आवश्यकता नहीं है।
जेसन व्हाइटहॉर्न

27

विकास का समय

प्रसंस्करण और भंडारण सस्ता है। आपका समय नहीं है

बस ध्यान दें:

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

प्रसंस्करण समय और भंडारण की सीधी तुलना में, मैं तेजी से विकास के समय की ओर झुकता हूं। क्या संग्रह का उपयोग करते हुए संग्रहणीय घटाव का उपयोग संग्रह को घटाने की सबसे तेज और सबसे अधिक याद रखने वाली कुशल विधि है? नहीं! लेकिन यह तेजी से विकास का समय है। यदि आप प्रदर्शन या स्मृति अड़चनों में भाग लेते हैं तो आप बाद में हल कर सकते हैं। ऑप्टिमाइज़ करने से पहले आपको पता होना चाहिए कि किस चीज़ को अनुकूलित करने की ज़रूरत है, यह आपके समय की बर्बादी है और यही मैं उसके खिलाफ वकालत कर रहा हूँ।


4
मूर का कानून लगभग दो साल पहले समाप्त हो गया था। यह समसामयिकता के बारे में सोचना शुरू करने और उन अतिरिक्त कोर का उपयोग करने का समय हो सकता है। यही एकमात्र तरीका है कि आप भविष्य में सस्ते घड़ी चक्र प्राप्त करेंगे।
रॉबर्ट हार्वे

3
सही होने के लिए, मूर का कानून अभी भी लगभग हर 2 साल में एक चिप पर ट्रांजिस्टर की संख्या को दोगुना करने के साथ मजबूत हो रहा है, जो कि एक ही मरने पर कई कोर के प्लेसमेंट को सक्षम कर रहा है। जो समाप्त हो गया है वह चक्रों की संख्या में एक सेकंड की 'मुफ्त दोपहर का भोजन' है।
डोमिनिक मैकडॉनेल

1
"प्रसंस्करण और भंडारण सस्ता है।" सीपीयू कैश और बस की गति नहीं है। वे आज मुख्य प्रदर्शन की अड़चन हैं।
मोजुबा

3
मैं पूरी तरह से इस बात से सहमत हूं। पठनीय कोड को बनाए रखना, कार्य के लिए उपयुक्त उपकरणों का उपयोग करना, और आपकी कंपनी के सहमत-मानकों का पालन करने से आपके समय को कंप्यूटर में वास्तव में टाइपिंग कोड खर्च करने में काफी कमी आएगी, जिससे आपकी कंपनी को एक टन की बचत होगी। आपका समय बेहतर इंजीनियरिंग टाइप करने में बिताया गया है।
बजे मैट डिट्रोलियो

1
@ बिल: या यदि आप एम्बेड कर रहे हैं, तो आपके पास कठिन सीमाएँ हो सकती हैं जो कि यदि आप उन्हें पार करते हैं तो उत्पाद लागत में काफी वृद्धि होगी। या सर्वर सॉफ्टवेयर के लिए, कभी-कभी - यदि कोई Google सर्वर पर 1% द्वारा प्रसंस्करण में सुधार कर सकता है, तो यह काफी बचत होगी।
डेविड थॉर्नले

12

प्रयोगकर्ता का अनुभव।

यह एकमात्र मूल्य है जो आपके ग्राहक के लिए मायने रखता है।

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

रखरखाव कम महत्वपूर्ण है। मैं वास्तव में जल्दी से आउ वॉशॉ की मरम्मत कर सकता हूं, लेकिन अगर यह एक जंगल के बीच में है, तो उपयोगकर्ता इसे नहीं ढूंढ सकते हैं।

प्रसंस्करण समय कम महत्वपूर्ण है। अगर मैं एक कार बनाता हूं जो 60 सेकंड में 0 से हल्की गति तक जाती है, तो उपयोगकर्ता स्टीयर नहीं कर सकते हैं।

सौंदर्यशास्त्र कम महत्वपूर्ण नहीं है। मैं मोना लिसा को चित्रित कर सकता हूं, लेकिन अगर वह एक दीवार के पीछे छिपी हुई है तो कोई भी उसे देखने के लिए नहीं जाता है।

उपयोगकर्ता अनुभव ही एकमात्र मूल्य है जो मायने रखता है। एक एप्लिकेशन बनाना जो उपयोगकर्ता को उसी तरह से करना चाहता है जिस तरह से उपयोगकर्ता को उम्मीद है कि अंतिम उपलब्धि है।


क्षमा करें, जोरी, मैं थोड़े मेरे संपादन में चला गया।
Malfist

यह कुछ के लिए एक सामुदायिक विकि है, है ना? ;)
जोएरी सेब्रेट्स

8

इसके लिए अनुकूलन करने के लिए केवल एक चीज है और वह है:

आपके ग्राहक क्या चाहते हैं

क्या आपके ग्राहकों को सबसे तेज कार्यक्रम संभव है? गति के लिए ऑप्टिमाइज़ करें।

क्या आपके ग्राहकों को पूर्ण विश्वसनीयता की आवश्यकता है? उसके लिए ऑप्टिमाइज़ करें।

क्या उन्हें कल इसे वितरित करने की आवश्यकता है या यह बेकार हो जाएगा? विकास की गति का अनुकूलन।

एक अविश्वसनीय रूप से छोटे संसाधन-विवश डिवाइस पर चल रहा है? उन संसाधनों का अनुकूलन करें।


एकमात्र पकड़ यह है कि वे अक्सर नहीं जानते कि वे क्या चाहते हैं, या जो संभव है या सहायक है, उसके बारे में अपेक्षाएं हैं।
टिम विस्क्राफ़

1
और जब बहुविकल्पीय प्रश्नों की वह श्रृंखला पूछी जाती है, तो अधिकतर आप बस "हाँ" सुनेंगे :-)
जेसन वाइटहॉर्न

1
मैंने यह नहीं कहा कि यह आसान था। और कम से कम यदि आप पूछते हैं, तो एक मौका है कि आपको एक उपयोगी उत्तर मिलेगा।
डीजेकेवर्थ

5

प्रसंस्करण समय

मेरे उपयोगकर्ता का समय सस्ता नहीं है। जो जैसा आता है वह वैसा ही चला जाता है।


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


दिलचस्प प्रसंस्करण समय में तिरछा ले। आपके द्वारा विकसित किए जाने वाले एप्लिकेशन किस प्रकार के हैं? मैं बेचैन हूँ।
जेसन व्हाइटहॉर्न

1
यदि आप बहुत सारे कंप्यूटर चलाते हैं, तो प्रसंस्करण समय महत्वपूर्ण है। उदाहरण के लिए, यदि यह अनुकूलन के लिए अतिरिक्त 2 महीने बिताने, या 10,000 पीसी को नए हार्डवेयर में अपग्रेड करने के बीच का विकल्प है, तो उस स्थिति में डेवलपर का समय जीत नहीं पाता है। लेकिन निश्चित रूप से, यह एक समझौता है। यदि आप केवल आधा दर्जन सर्वरों पर चलते हैं, तो डेवलपर का समय उस स्थिति में जीत जाता है।
डीन हार्डिंग

1
@ जेसन, मेरे पास अभी यह आसान है, एक्सेल और वीबीए के साथ स्प्रेडशीट के एक समूह में काम कर रहा है (जो मैं तेजी से संघनित कर रहा हूं)। मेरे उपयोगकर्ता अगले कमरे में काम करते हैं, और उन्होंने मुझे बताया कि क्या मुझे कोई समस्या है। मेरा दृष्टिकोण तीस वर्षों के लिए कंप्यूटर का उपयोग करने से आता है, और एप्लिकेशन देखने से फूला हुआ रहता है, उन्नयन को मजबूर करता है बस क्षतिपूर्ति करें। मुझे पता है कि डेवलपर्स बेहतर कर सकते हैं, उन्हें बस कुशल कोड लिखने की आदत डालनी होगी।

कुशल कोड के लिए +10। यह अब तक अक्सर अनदेखी की गई है, खासकर मॉड्यूलर प्रोग्रामिंग में। प्रत्येक मॉड्यूल एक उचित गति से चलता है, लेकिन सभी का योग भयावह रूप से धीमा हो सकता है।
जोरिस मेव्स

4

मैं स्मृति की खपत और आवंटन को सीमित करने की दिशा में तिरछा हूं। मुझे पता है कि यह पुराना स्कूल है, लेकिन:

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

ब्लोटवेयर से बचाव के लिए काम करने के लिए +1। मेमोरी हॉगिंग प्रोग्राम खराब प्रोग्राम हैं।

मेमोरी हॉगिंग कार्यक्रम 64-बिट सिस्टम पर, बड़े और द्वारा चलाए जा सकते हैं। यही हमने तब किया जब हमारा एक ऐप मेमोरी के मुद्दों में चला गया (यह वैध रूप से बड़ी मात्रा में मेमोरी का उपयोग करता है)। प्रदर्शन होने पर पहला बुलेट बिंदु महत्वपूर्ण है।
डेविड थोरले

2

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

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

उदाहरण के लिए, यदि आप एक शक्तिशाली मशीन पर सर्वर अनुप्रयोग विकसित कर रहे हैं, तो आप एक अचल समय सीमा हिट करने के लिए प्रदर्शन दक्षता को बंद करना चाहते हैं। हालांकि, यदि आपका डेवलपर एक एप्लिकेशन है जिसे उपयोगकर्ता इनपुट (वीडियो गेम के बारे में सोचें) को तुरंत प्रतिक्रिया देने की आवश्यकता है, तो आपको यह सुनिश्चित करने के लिए अपने इनपुट रूटीन को प्राथमिकता देने की आवश्यकता है कि यह शिथिल नहीं है।


2

जो भी वर्चुअलाइजेशन तकनीक मैं उपयोग कर रहा हूं

उन दिनों को याद करें जब 512 एमबी से अधिक रैम वाले सिस्टम को ब्लीडिंग एज माना जाता था? मैं अपना दिन पूर्व के लिए कोड लिखने में बिताता हूं।

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

तो यहाँ मैं लिख रहा हूँ, जो एक बिलकुल नए $ 6k सर्वर पर चलेगा, और प्रत्येक प्रोग्राम को 100kb आवंटित सीलिंग के भीतर (आदर्श रूप से) काम करना होगा, या पूरी तरह से डायनामिक मेमोरी आवंटन करना होगा।

संक्षेप में, मैं इसके लिए अनुकूलन करता हूं:

  • स्मृति पदचिह्न
  • सॉर्ट्स (जहां मेरा अधिकांश समय अपना अधिकांश समय व्यतीत करता है)

मुझे भी बहुत मेहनती होना पड़ता है जब ताले का इंतजार करने में समय लगता है, I / O की प्रतीक्षा करता है या बस सामान्य रूप से प्रतीक्षा करता है। मेरे समय की पर्याप्त मात्रा मौजूदा गैर अवरुद्ध सॉकेट पुस्तकालयों में सुधार और लॉक मुक्त प्रोग्रामिंग के अधिक व्यावहारिक तरीकों को देखने में जाती है।

हर दिन मुझे यह थोड़ा विडंबनापूर्ण लगता है कि मैं 15 महीने पहले ही कोड लिख रहा हूं, पिछले महीने जो सिस्टम खरीदे गए थे, तकनीक में प्रगति के कारण ।

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

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


1
मेमोरी फ़ुट प्रिंट एंगल के लिए +1। मैंने कभी उन विशेष बाधाओं के खिलाफ कोडित नहीं किया है जो आप के साथ काम कर रहे हैं, लेकिन पहले खंड को एक्सपी के बारे में बात करते हुए हटा दें और इसे iPhone के साथ बदल दें और मुझे पता है कि आप कहाँ से आ रहे हैं :-)
जेसन व्हाइटहॉर्न

2

शोध का परिणाम

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

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


1
  1. डिज़ाइन
    • कम युग्मन, मॉड्यूलर
    • संक्षिप्त, अच्छी तरह से परिभाषित, कार्यात्मक क्षेत्र
    • अच्छी तरह से प्रलेखित
    • लगातार cruft के लिए रिफ्लेक्टर
  2. रखरखाव
    • प्रतिलिपि प्रस्तुत करने योग्य निर्माण और डिबग
    • इकाई परीक्षण
    • प्रतिगमन परीक्षण
    • स्रोत नियंत्रण

... उसके बाद बाकी सब कुछ

... अंत में, प्रदर्शन के लिए अनुकूलन ;-)


1

गुणवत्ता / परीक्षण

गुणवत्ता की दिशा में ऑप्टिमाइज़ करें, क्योंकि यह सुनिश्चित करने के लिए कि परीक्षण के लिए विकास अनुसूची में समय है, दोनों सुविधाओं / चरणों के बाद इकाई परीक्षण और परीक्षण।


1

यह आपके कार्यक्रम की आवश्यकता पर निर्भर करता है।

मैं जो भी करता हूं उसमें से अधिकांश प्रसंस्करण क्षमता और स्मृति द्वारा भारी रूप से विवश होता है, लेकिन औसत वर्ष में बहुत अधिक परिवर्तन, यदि कोई हो, तो बहुत अधिक नहीं होता है।

मेरे पास पहले से उन परियोजनाओं पर काम किया गया है जहां कोड को अक्सर बदल दिया जाता है, इसलिए उन मामलों में स्थिरता अधिक महत्वपूर्ण हो जाती है।

मैंने पूर्व में सिस्टम पर भी काम किया है, जहां डेटा की मात्रा सबसे महत्वपूर्ण मुद्दा है, यहां तक ​​कि भंडारण के लिए डिस्क पर भी, लेकिन अधिक सामान्यतः आकार एक मुद्दा बन जाता है जब आपको डेटा को पूरी तरह से स्थानांतरित करना होता है, या धीमी गति से। संपर्क।


1

लालित्य

यदि आपका कोड अच्छी तरह से डिज़ाइन किया गया है, तो इसके कई प्रभाव होंगे:

  1. इसे बनाए रखना आसान होगा (ग्राहक के लिए लागत में कटौती)
  2. इसे अनुकूलित करना आसान होगा (JIT या पूर्ण संकलक के लिए)
  3. इसे बदलना आसान होगा (जब आप बेहतर समाधान के बारे में सोचते हैं)

0

विकास का समय, बिल्कुल। मैं बैंडविड्थ के लिए भी अनुकूलन करता हूं, लेकिन मैं बाइनरी में नहीं जाता हूं।


0

चूंकि मैं कई प्रकार के सिस्टम पर इंस्टॉलेशन करता हूं, आईबीएम मेनफ्रेम से पीसी तक सब कुछ, मैं पहले संगतता, फिर आकार, फिर गति के लिए अनुकूलन करता हूं।


0

निर्भर करता है

यदि आप एक वास्तविक समय एम्बेडेड वीडियो प्रसंस्करण प्रणाली पर काम कर रहे हैं तो आप प्रसंस्करण गति के लिए अनुकूलन करते हैं। यदि आप एक वर्ड प्रोसेसर पर काम कर रहे हैं जिसे आप विकास के समय के लिए अनुकूलित करते हैं।

हालाँकि, सभी मामलों में आपके कोड को काम करना चाहिए और इसे बनाए रखना चाहिए।


0

मेरे इरादे की अभिव्यक्ति।

मैं चाहता हूं कि मेरा कोड पढ़ने वाला कोई व्यक्ति आसानी से यह देख सके कि मैं कौन से ऑपरेशन को डोमेन पर लागू करने की कोशिश कर रहा था। इसी तरह मैं गैर-शब्दार्थ कबाड़ (ब्रेसिज़, 'फंक्शन' कीवर्ड्स इन js, आदि) को स्कैन करना आसान बनाने के लिए कम से कम करने की कोशिश करता हूँ।

बेशक आप संतुलन बनाए रखेंगे कि स्थिरता के द्वारा। मुझे ऐसे लेखन कार्य पसंद हैं जो फ़ंक्शंस और सभी प्रकार की उन्नत तकनीकों को लौटाते हैं और वे मेरे लक्ष्य को आगे बढ़ाते हैं, लेकिन यदि लाभ मामूली है, तो मैं तकनीक के साथ चिपके रहने की दिशा में गलत काम करूंगा जो ठोस जूनियर प्रोग्रामर से परिचित होंगे।


-6

उन सभी को

प्रसंस्करण समय

आज के कंप्यूटर तेज़ हैं, लेकिन अभी तक काफी हैं। ऐसी कई स्थितियाँ हैं जहाँ प्रदर्शन महत्वपूर्ण है - यदि आप मीडिया सर्वरों की स्ट्रीमिंग करते हैं।

भंडारण

आप ग्राहक के पास एक बड़ी डिस्क हो सकती है, चलो कहते हैं, 1 टीबी। जिसे 1000 HD मूवीज द्वारा लिया जा सकता है, अगर आप इसे एक ऐसी सेवा बनाना चाहते हैं जो कि काफी दूर है, है ना?

विकास का समय

खैर मुझे यकीन नहीं है कि अगर यह "अनुकूलन" के रूप में गिना जाता है, तो मैं क्या कर रहा हूं मैं सी ++ के बजाय जावा का उपयोग करता हूं, और विकास 10 गुना तेजी से होता है। मुझे लगता है कि मैं बता रहा हूं कि मैं सीधे कंप्यूटर पर क्या सोचता हूं, बहुत सीधे। आगे और पूरी तरह से चट्टानों!

BTW मेरा मानना ​​है कि विकास को गति देने के लिए आपको अपनी विकास प्रक्रिया का चयन करना चाहिए, आपको जावा को कभी भी रगड़ना नहीं चाहिए, जैसे अजगर ... जो दावा करता है कि वे आपको DEV समय छोटा कर सकते हैं।


आपको यह दिलचस्प लग सकता है: paulgraham.com/avg.html - यह प्रोग्रामिंग भाषाओं की ताकत पर चर्चा करता है।

3
सीमित समय और बजट के साथ, आप उन सभी पर समय नहीं बिता सकते हैं - कुछ प्राथमिकता होनी चाहिए।
JBRWilkinson

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