क्या प्रोग्रामिंग भाषाओं का धीमा प्रदर्शन, वास्तव में, एक बुरी बात है? [बन्द है]


18

यहाँ मैं इसे कैसे देख रहा हूँ।

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

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

तो, प्रोग्रामिंग भाषाओं की धीमी कार्यक्षमता, वास्तव में, एक बुरी बात है?


22
किस तरह से धीमा संकलन समय, रनटाइम, लिखने का समय, कुछ अन्य मीट्रिक?
मैट एलेन

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

5
@ माइक: वैकल्पिक रूप से, प्रोग्राम धीमी गति से चलते हैं क्योंकि जेफ ने हाल ही में अपने ब्लॉग में अच्छी तरह से अभिव्यक्त किया है: "एल्गोरिदम उन लोगों के लिए है जो राम को खरीदना नहीं जानते हैं"। यदि प्रोग्राम O (N log n) समय के बजाय क्यूबिक टाइम पर चलता है, तो कंप्यूटर की शक्ति वास्तव में बड़ी समस्याओं के लिए मायने नहीं रखती है।
डेविड थोरले

2
@ डेविड: हम अपने सर्वर में 512 जीबी से अधिक रैम नहीं प्राप्त कर सकते हैं, इसलिए हमें अब बेहतर एल्गोरिदम लिखना होगा।
18

2
निर्भर करता है कि अड़चनें कहां हैं। यदि कार्यक्रम I / O 99.9% समय पर प्रतीक्षा करता है, तो इससे कोई फर्क नहीं पड़ता कि क्या कार्यक्रम स्वयं दस्तकारी कोडेलर में लिखे जाने की तुलना में 10 गुना धीमा है।

जवाबों:


50

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

यह हमेशा एक व्यापार है। छोटे एकतरफा कार्यों के लिए, यह एक C ++ ऐप की तुलना में पायथन स्क्रिप्ट लिखने के लिए बहुत तेज़ है, जो ऐसा ही करता है (मेरे लिए विशिष्ट उदाहरण किसी प्रकार का बैच टेक्स्ट प्रोसेसिंग या डायरेक्टरी ट्री चलना और फाइलों में कुछ करना होगा), और मुझे इस बात की बिलकुल परवाह नहीं है कि 100x धीमे होने पर भी इसे 10 ms या 1000 ms लगते हैं, क्योंकि मुझे लिखने और परीक्षण करने में आधा समय लग सकता है।

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


मैंने यह नहीं बताया कि "धीमा = बुरा"। फिर भी, अपने विचार साझा करने के लिए धन्यवाद।
इमानुइल रुसेव

9
+1 'तेज़ पर्याप्त' धीमा बुरा है जब एक कार्यान्वयन 'बहुत धीमा / पर्याप्त तेज़ नहीं है'। किसी भी अन्य समय यह कोई फर्क नहीं पड़ता।
कर्क ब्रॉडहर्स्ट

4
+1 'काफी तेज'। आप जो करते हैं, उसके आधार पर, प्रोग्रामर का समय निष्पादन समय में संभावित बचत से अधिक A LOT हो सकता है।
जोनास

3
@ जोनास: इसका लगभग कभी भी मामला नहीं है, यह सिर्फ इतना है कि आप प्रोग्रामर का वेतन देखते हैं; आप उपयोगकर्ताओं को निराशा में अपना सिर लटकाते हुए नहीं देखते हैं क्योंकि ऐप चिल्लाते हुए कहता है "चलो, कितना मुश्किल है, तुम बकवास सॉफ्टवेयर के ढेर"। यदि उन्होंने धीमे सॉफ्टवेयर v फास्ट सॉफ्टवेयर के TCO को प्रकाशित किया है - तो आप अपनी प्राथमिकताओं को तुरंत अपने बिक्री विभाग को बदलकर देखेंगे।
gbjbaanb

1
@ mcmcc: मैं वहां भाषाओं के बारे में बात नहीं कर रहा था, लेकिन उपयोगकर्ता अनुभव के बारे में। जब आप एक बटन पर क्लिक करते हैं, तो तुरंत कुछ होना होता है। जब आप एक गणना शुरू करते हैं, तो यह तब तक ठीक है जब तक इसमें कुछ समय लगता है, जब तक कि एक उपयोगी प्रगति सूचक न हो।
जोनास

18

बहुत सरल - धीमा होना एक बुरी बात है

जब कार्यक्रम को एक निश्चित स्तर के प्रदर्शन की आवश्यकता होती है

क्योंकि उस प्रदर्शन के बिना आप आवश्यकताओं को पूरा नहीं कर रहे हैं।

यह एक व्यावसायिक अनुप्रयोग से कुछ भी हो सकता है, जिसमें गेम के माध्यम से स्वीकार्य मात्रा में प्रश्नों को संसाधित करने की आवश्यकता होती है, जिसे किसी भी समय स्क्रीन पर बहुत सारी जानकारी प्रदर्शित करने की आवश्यकता होती है। यदि प्रोग्राम पर्याप्त तेज़ नहीं है, तो यह बस काम नहीं करता है


2
..और अक्सर आवश्यकताएं एक प्रकार से "एक सेकंड लाने के लिए एक्स सेकंड से अधिक" के रूप में अलिखित होती हैं, औसत वेबसाइट उपयोगकर्ता को किसी अन्य साइट पर स्थानांतरित करने के लिए "रास्ता" बनाती है
JBRWilkinson

1
@JBRWilkinson हाँ, या यदि सिस्टम बहुत धीमा है, तो नए प्रदर्शन की आवश्यकताएं अचानक दिखाई देंगी;)
किर्क ब्रॉडहर्स्ट

12

इसे इस तरह से देखें: कंप्यूटर बेवकूफ हैं । वे निर्देशों का पालन कर रहे हैं कि एक ट्रिगर तालिका के साथ किसी भी मूर्ख का पालन कर सकते हैं। वे जो करने का मतलब रखते हैं उसके बजाय आप जो कहते हैं उस पर जोर देते हैं। आत्म-निर्देश या अंतर्ज्ञान का एक टुकड़ा नहीं। यह भयानक है।

कंप्यूटर के लिए जो एक चीज है, वह है तेज। वास्तव में! एक फाइलिंग कैबिनेट के साथ एक पोर एक डेटाबेस के रूप में एक ही काम कर सकता है। एक प्रिंटिंग प्रेस को क्रैक करने वाला कोई व्यक्ति अपाचे क्या कर सकता है। गंभीरता से! और उन्होंने डीआईडी, सैकड़ों और सैकड़ों वर्षों के लिए, तथ्य की बात के रूप में। क्यों कुछ भी करने के लिए एक कंप्यूटर अच्छा है इसकी गति है।

तो एक प्रोग्रामिंग भाषा जो (अन्य भाषाओं की तुलना में) शोषण करने में विफल रहती है जो कंप्यूटर का उपयोग करने का एकमात्र लाभ नहीं खो रही है।


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

5
कोई भी प्रोग्रामिंग भाषा कंप्यूटर की गति का शोषण करती है। मूल ओएलपीसी कंप्यूटरों में से एक पर पायथन चीजों को बहुत तेजी से करता है जो मैं हाथ से कर सकता हूं। इस बात को ध्यान में रखें कि मेरा वर्तमान लैपटॉप (दो साल पहले खरीदा गया था, और फिर रेखा के ऊपर नहीं) लगभग सौ लाख से लाख गुना अधिक शक्तिशाली है, जो मेरे पहले घर के कंप्यूटर से सबसे अधिक शक्तिशाली है।
डेविड थॉर्नले

4
यह उल्लेख नहीं करने के लिए कि एक कंप्यूटर उपयोग करने के लिए बहुत अधिक ऊर्जा की खपत करता है (विशेष रूप से सर्वर), और यह कि ऊर्जा की खपत (ग्रीन टेक) के साथ एक कथित चिंता है, और यह कि आमतौर पर एक तेज कार्यक्रम ऊर्जा की समान मात्रा के साथ अधिक करता है धीमा कार्यक्रम, ताकि मायने रखता है (विशेष रूप से सर्वर पर, जो बहुत खपत करते हैं)
Coyote21

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

2
फिर भी यदि गति (निष्पादन की) अंतिम लक्ष्य है तो हम सभी अपने प्रोग्राम को मशीन कोड में क्यों नहीं लिखते हैं?
एमैनुएल रुसेव

5

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


क्या आपको लगता है कि जिन भाषाओं को धीमा माना जाता है (चलने के मामले में), जैसे कि PHP, को तेजी से चलाने के लिए लागू किया जा सकता है?
इमानुएल रुसेव

1
Zend अनुकूलक किसी को भी?
user281377

मुझे यह एक और तरीका पूछना है - क्या PHP के कार्यान्वयन में यह धीमी गति से करता है?
इमानुइल रुसेव

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

फेसबुक द्वारा शुरू किया गया हिपहॉप कंपाइलर PHP को C ++ कोड में ट्रांसलेट कर सकता है, इसलिए यह वास्तव में तेज़ है।
JBRWilkinson

3

रन-टाइम, प्रारंभिक विकास समय और रखरखाव समय (मुद्दों / बगों को पलटने के लिए लिया गया समय और नए कोड का उत्पादन और इसे तैनात करने) के संदर्भ में गति को मापा जा सकता है।

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

इसलिए आपके द्वारा अपेक्षित गति के आधार पर बहुत कुछ एक संतुलन है।

प्रसंग भी महत्वपूर्ण है। अपने प्रारंभिक कॉन्फ़िगरेशन को 0.1 सेकंड के बजाय 0.5 सेकंड में लोड करना कोई बड़ी बात नहीं है, लेकिन रनटाइम के दौरान, 0.1 सेकंड के बजाय क्वेरी करने के लिए 0.5 सेकंड का समय लेना एक बड़ी बात हो सकती है अगर इसे 100 प्रश्नों को संभालना है, तो इस तरह से 50 सेकंड का समय लगेगा 10।


उपयोगकर्ता की धारणा में 100ms प्रभावी रूप से तात्कालिक है। 500ms काफी ध्यान देने योग्य है। यदि उपयोगकर्ता क्वेरी कर रहा है, तो वर्कफ़्लो में ध्यान देने योग्य अंतर है।
डेविड थॉर्नले

3

सरल - ग्राहकों को तेज सॉफ्टवेयर पसंद है। वास्तव में कंप्यूटर का पूरा उद्देश्य जल्दी से गणना करना है।


11
गलत, वास्तव में। ग्राहकों को ऐसे सॉफ्टवेयर पसंद हैं जो आवश्यकताओं के अनुरूप हों और बजट के भीतर हों। यदि कोई स्क्रीन 15 की बजाय 19 मिलीसेकंड का निर्माण करती है, तो वे कम देखभाल नहीं कर सकते, क्योंकि वे कभी नोटिस नहीं करते हैं (यदि इसे बनाने में 15 सेकंड लगते हैं, तो यह कुछ और है)। उन्हें इस बात की भी परवाह नहीं है कि आप "तेज़ भाषा" का उपयोग करते हैं, वे बस कुछ ऐसा चाहते हैं जो विशिष्टताओं और बजट के भीतर करता है।
13:22

4
19ms बनाम 15 एमएस में अंतर नहीं हो सकता है, लेकिन 500ms बनाम 300ms निश्चित है और यह एक सफल उत्पाद और विफलता के बीच अंतर कर सकता है।
नागरजा ट्रिफ़ुनोविक

2
+1 "ग्राहक ऐसे सॉफ़्टवेयर से प्यार करते हैं जो आवश्यकताओं और बजट के भीतर निष्पादित होते हैं।" दूसरी ओर, कुछ अंतिम उपयोगकर्ता, जो सॉफ़्टवेयर के लिए सीधे भुगतान नहीं कर रहे हैं, एक बड़ी कंपनी के कर्मचारियों की तरह, वास्तव में विकास लागतों के बारे में परवाह नहीं करते हैं। बेशक एक सॉफ्टवेयर विक्रेता के रूप में आपका सबसे महत्वपूर्ण कार्य उन लोगों को खुश रखना है, जो वास्तव में आपको भुगतान करते हैं।
Zsolt Török

@Zsolt: यह वास्तव में आपके द्वारा विकसित किए जा रहे सॉफ़्टवेयर पर निर्भर करता है। मैं आमतौर पर उन उत्पादों पर काम करता हूं, जहां एंड-यूज़र या तो सीधे उत्पादों के लिए भुगतान करते हैं या क्रय निर्णयों को प्रभावित करते हैं - वे हमें विनिर्देश नहीं देते हैं और हमारे बजट की परवाह नहीं करते हैं। शायद मुझे "ग्राहकों" के बजाय "उपयोगकर्ता" शब्द का उपयोग करना चाहिए था।
नागेज़ा ट्रिफ़ुनोविक

4
एक उपयोगकर्ता (डेवलपर के रूप में) के रूप में बोलते हुए, मैं सामान्य जवाबदेही कह सकता हूं (ध्यान दें: गति से अलग) एक कार्यक्रम को दूसरे पर चुनने का मेरा एक प्रमुख कारक है। यह एक कारण है कि मैं उदाहरण के लिए कुछ जावा अनुप्रयोगों का उपयोग करता हूं; अकेले जेवीएम पर स्टार्टअप समय इस क्षेत्र में -5000 अंकों के साथ शुरू होने वाले ऐप्स में परिणाम देता है;)। गंभीरता से, हालांकि, जवाबदेही (अक्सर करता है) आपके उत्पाद यूआई के स्पष्ट होने या प्रभावी होने के बीच अंतर कर सकता है, और कभी-कभी यह हासिल करना मुश्किल हो सकता है कि क्या आप जिस भाषा का उपयोग कर रहे हैं वह स्टुटर्स या लंबी डिस्क i / o प्रतीक्षा करता है।
बिली ओनली

3

धीमा सापेक्ष है। यदि मुझे प्रति सेकंड 10 बार एक पोर्ट पढ़ने की आवश्यकता है, तो एक भाषा जो एक बाइनरी नहीं बना सकती है जो ऐसा कर सकती है जो बहुत धीमी है। यदि ओटोह मैं एक वेब एप्लिकेशन लिख रहा हूं, जहां सर्वर और ब्राउज़र / क्लाइंट के बीच अनुरोध / प्रतिक्रिया अनुक्रम सेकंड में मापा जाता है और उपयोगकर्ता को बटन क्लिक करने से पहले स्क्रीन पर मिनट खर्च करने की संभावना है, एक प्रोग्रामिंग भाषा जो अनुरोध प्रसंस्करण को संभाल सकती है 1 सेकंड में संभवत: काफी तेज है (ज्यादातर पाठ्यक्रम बहुत तेज है)।

बेशक प्रोग्रामिंग भाषा निष्पादन की गति निर्धारित करने में एक कारक हो सकती है, लेकिन यह भाषा ही नहीं बल्कि इसके साथ आने वाले कंपाइलर और / या रनटाइम भी होंगे। यह जावा के विकास को देखकर स्पष्ट है, जहां जेवीएम (समान हार्डवेयर वातावरण पर) का प्रदर्शन पिछले कुछ वर्षों में मौलिक रूप से बढ़ा है। और निश्चित रूप से यह हमेशा संभव है कि आप जो भी वातावरण चुनते हैं उसमें बहुत धीमा कोड लिखें। जैसे कि "C ++ जावा की तुलना में दस गुना तेज है" जैसे दावे स्वतः ही संगीन हैं जब तक कि योग्य और निर्धारित नहीं किया गया कि किन परिस्थितियों का परीक्षण किया गया और कैसे। यह एक परीक्षण बनाना समान रूप से संभव है जहां जावा सी ++ की तुलना में तेज है, यह सब इस बात पर निर्भर करता है कि आप परीक्षण कोड के रूप में क्या उपयोग कर रहे हैं और आप इसे कैसे निष्पादित करते हैं।


3

क्योंकि प्रोग्रामिंग भाषाएं प्रोग्रामर की सेवा करने के लिए मौजूद नहीं हैं, वे उपयोगकर्ताओं की सेवा के लिए प्रोग्राम बनाने के लिए मौजूद हैं

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

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


3

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

किसी भी प्रकार के स्थायी सॉफ़्टवेयर के लिए, जो लोगों द्वारा उपयोग किया जाता है, हम आमतौर पर इसे जितनी जल्दी हो सके चाहते हैं। विधानसभा स्तर पर, समय-समय पर बाजार बहुत अधिक बढ़ जाता है कि यह लाभदायक नहीं है। यह सब व्यापार-बंद है। व्यवसाय के दृष्टिकोण से, यह खराब प्रोग्रामर को C ++ में मेमोरी त्रुटियों को डीबग करने के लिए अधिक लाभदायक हो सकता है, इसे कई और महीनों तक कर रहा है, अगर इसका मतलब है कि उत्पाद आपके प्रतिद्वंद्वियों से तेज है।

इसलिए गति वास्तव में कई सॉफ्टवेयर में महत्वपूर्ण है । धीमी भाषाओं को आजकल "बुरा" माना जाता है क्योंकि वे वास्तव में बहुत धीमी हैं (पायथन आसानी से 50x - 100x धीमी हो सकती है, और यह बहुत अधिक है)


2

प्रोग्रामिंग भाषाएं प्रोग्रामर की सेवा के लिए मौजूद हैं।

मुझे नहीं पता कि आप इस निष्कर्ष पर कैसे पहुंचे। मैं कहूंगा: सॉफ्टवेयर इंजीनियर अपनी आवश्यकताओं के लिए प्रोग्रामिंग भाषाओं का उपयोग करते हैं।

कुछ प्रोग्रामिंग लैंग्वेज धीमी तो दूसरी हैं लेकिन ऐसा नहीं है क्योंकि उनमें कुछ गड़बड़ है।

यह भी परतदार बयान है। यहां 'धीमा' शब्द का उपयोग करने से आपका क्या मतलब है, इसे परिभाषित करें। धीमी का मतलब हो सकता है:

  1. अंतिम कार्यक्रम, जो एक ही चीज़ को प्राप्त करते हैं, दूसरे की तुलना में एक भाषा में 'धीमी' चलाते हैं।
  2. अंतिम कार्यक्रम बनाने में लगने वाला समय अधिक हो सकता है (इसलिए, कुछ इसे 'धीमे' के रूप में वर्णित करेंगे)।

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


3
आप सही कह रहे हैं कि "सॉफ़्टवेयर इंजीनियर अपनी आवश्यकताओं के लिए प्रोग्रामिंग भाषाओं का उपयोग करते हैं"। यह केवल इस कथन का समर्थन करता है कि "प्रोग्रामिंग भाषाएं प्रोग्रामर की सेवा के लिए मौजूद हैं"।
इमानुइल रुसेव

1
मैं कहूंगा: सॉफ़्टवेयर इंजीनियर समस्याओं के समाधान के लिए प्रोग्रामिंग भाषाओं का उपयोग करते हैं (जो आमतौर पर अपने स्वयं के नहीं होते हैं, लेकिन उनके ग्राहक ')।
पैटर तोर्क

@Emanuil: मैं यह नहीं कहूंगा कि "एक हथौड़ा एक अप्रेंटिस / मानव की सेवा करता है", लेकिन यह कि किसी कार्य को पूरा करने के लिए एक हथौड़ा का उपयोग किया जाता है (उदाहरण के लिए एक कील हथौड़ा, कोई व्यक्ति जिसे आप पसंद नहीं करते हैं, आदि)। @ Péter: मुझे आश्चर्य है कि कितने लोग सिर्फ '@Peter' लिखते हैं। लेकिन अगर आप हर चीज के लिए 'समस्या' शब्द गढ़ सकते हैं , तो मुझे लगता है कि हमारे बयान प्रभावी रूप से पर्यायवाची हैं।
JK

1

किसी भी सॉफ्टवेयर की तरह, धीमा होना अंतर्निहित समस्याओं / खराब डिज़ाइन का संकेत हो सकता है। डिजाइन एक सादगी से स्वीकारोक्ति का एक सा है, लेकिन यह इस तथ्य से अलग नहीं होता है कि यह अब जिस डिजाइन सिद्धांत पर आधारित है, वह पुराना है और इसे 'बुरा' माना जाता है।

उदाहरण के लिए क्लासिक ASP और ASP.net को लें।


1

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

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

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

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

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


1

मैं बताता हूं कि अधिकांश प्रदर्शन समस्याएं मौजूद हैं क्योंकि प्रोग्रामर ने खराब काम किया था, क्योंकि भाषा बहुत धीमी थी। वास्तव में, आपके द्वारा चुनी गई भाषा की तुलना में प्रदर्शन के बारे में चिंता करने के लिए बहुत अधिक प्रासंगिक चीजें हैं। मेरी सूची में लगभग 1,203,407 वां नंबर होगा।


0

तो, प्रोग्रामिंग भाषाओं की धीमी कार्यक्षमता, वास्तव में, एक बुरी बात है?

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

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

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

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

उच्च प्रदर्शन वाले उपचार को किन घटकों को प्राप्त करना चाहिए? अनुकूलन? उन्हें मापें । उन्हें प्रोफाइल करें। अनुमान लगाने के बजाय सच्चाई का पता लगाएं। अपने प्रयास पर ध्यान केंद्रित करें जहां यह सबसे अच्छा करता है।

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