क्या प्रोग्रामिंग भाषा रनटाइम्स की मेमोरी खपत का तुलनात्मक अध्ययन है, जो अभिव्यक्ति और उत्पादन बग अनुपात के साथ संबद्ध है? [बन्द है]


10

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

हमें प्रोग्रामिंग भाषा के दुष्प्रभाव और इसके टूलींग पर तुलनात्मक अध्ययन का एक अच्छा हिस्सा मिलता है, जैसे:

  • निर्माण समय,
  • उत्पादन के बाद बग का पता लगाने की संभावना,
  • अभिव्यंजक शक्ति,
  • आदि...

हालाँकि, मैं हाल ही में अपने कार्यक्रमों की मेमोरी खपत से कुछ अधिक से अधिक bummed है। यह इस तथ्य से आ सकता है कि जबकि मूर का कानून कच्चे प्रदर्शन के लिए हमारी तरफ है, हमें पता चला है कि अन्य अड़चनें अधिक हैं। वह, और मैं अपने हार्डवेयर को इतनी बार अद्यतन नहीं करता, और मेरे पास कुछ "पुराना" है (2005-2006 3.6GHz Pentium 4 4GB RAM के साथ पढ़ें) जो आजकल बड़े अनुप्रयोगों के बिना उपयोग किए जाने के लिए कठिन हैं मुझे उनमें से प्रत्येक बिट को निचोड़ने के लिए बड़ी परेशानी से गुजरने की आवश्यकता होती है (ओएस, यूआई, सेवाओं और डेमॉन की पसंद, एक कार्य या किसी अन्य के लिए उपयोग करने के लिए आवेदनों की पसंद ...)। बहुत ईमानदारी से, कभी-कभी मैं आग लगाता हूं topया procexpसबसे निर्दोष कार्यक्रमों द्वारा उपयोग की जाने वाली स्मृति को देखकर रोता हूं ।

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

आधुनिक आवश्यकताओं के लिए आधुनिक उपकरण

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

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

और आगे भी, क्या कुछ अध्ययन हैं जो इसे अन्य मापदंडों के साथ क्रॉस-रेफरेंस करते हैं ( उदाहरण के लिए, इस अनुच्छेद के समान , अन्य मानदंडों के लिए, बेंचमार्क गेम पर भी आधारित है )?


3
बेंचमार्क गेम अपर्याप्त क्यों है? यह शायद सबसे अच्छा संसाधन है, और यह पहले से ही मेमोरी खपत को विस्तार से कवर करता है।
रॉबर्ट हार्वे

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

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

2
How much memory consumption makes you weep?एक निष्क्रिय क्रोम टैब w / o एक्सटेंशन के लिए 30MB, ATI के CCC के लिए 100MB, एक निष्क्रिय Googletalk प्लगइन के लिए 11MB या एक निष्क्रिय प्रिंटर ड्राइवर के लिए 23MB। ये बातें, और बहुत कुछ। क्रोम उदाहरण पार्क से थोड़ा बाहर है क्योंकि यह एक अधिक जटिल उदाहरण है, लेकिन अन्य लोग पहले से ही मुझे काफी आश्चर्यचकित करते हैं।
जाइलम

जवाबों:


7

मुझे कुछ आंशिक जानकारी मिली है, इसलिए मैं अपने निष्कर्षों को अपने उत्तर में संकलित करना शुरू करूंगा। कृपया ऐसा न करें कि आप अपने स्वयं के उत्तर (या इसे संपादित करना) में योगदान करने से रोकें।

मौजूदा साहित्य:

  • 7 प्रोग्रामिंग भाषाओं की एक अनुभवजन्य तुलना - Prechelt (2000) [ PDF ]

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

  • प्रोग्रामिंग भाषाओं की गति, आकार और निर्भरता - मार्कोयू (2009) [ ब्लॉग ]

  • कोड का इस्तेमाल किया, बेंचमार्क गेम से समय का उपयोग किया [ u32 , u32q , u64 , u64q ]

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


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

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

@igouy: हाँ। उस पर संदेह नहीं है, लेकिन मैं उम्मीद कर रहा था कि मैं खुद को प्रयोग और दस्तावेज / रखरखाव नहीं कर पाऊंगा :) वास्तव में, एक हैलो दुनिया से भी कम समय ठीक होगा, क्योंकि कुछ में आपको लिंक करने की आवश्यकता भी नहीं होगी (या) उदाहरण के लिए, लोडिंग राउटिंग। (संकलक अनुकूलन और अन्य चीजों को अक्षम करने की सलाह दी जा सकती है)
हेलेम

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

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

1

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

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

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

अनुकूलता की सीमा की तुलना करें कि एक डेस्कटॉप अपने विरासत सॉफ्टवेयर के साथ एक मोबाइल डिवाइस के अनुकूल होने की सीमा तक है।

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

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

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

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

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

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


वास्तव में वास्तव में जवाब नहीं देता है, यह प्रश्न के बाक्सग्राउंड में जोड़ने वाले स्वतंत्र रूप के विचारों की तरह अधिक है :) धन्यवाद और +1 अंतर्दृष्टि के लिए, यद्यपि। (इसके अलावा, मैं यह स्पष्ट करना चाहता हूं कि मैंने कभी भी Microsoft सिस्टम को दोषियों के हिस्से के रूप में एकल करने का इरादा नहीं किया था। सिस्टम के मेमोरी मॉडल और निष्पादन योग्य प्रारूप इसे अनुमति देते हैं।
जाइलम ha ’at१३ को

यह निश्चित रूप से Microsoft पर प्रहार करने का मेरा उद्देश्य नहीं है, लेकिन वे इस संबंध में सबसे आसान मामला है। अन्य बड़े नाम, पारंपरिक प्रदाता एक ही नाव में हैं, यदि संभवत: उदाहरण के लिए थोड़ा अलग संबंध (औद्योगिक ग्रेड डेटाबेस और नेटवर्किंग उपकरण; कितने समझौते वे आगे ले जाते हैं जो अन्यथा उनके अंतर्निहित उत्पाद नवाचार और मूल्य में महत्वपूर्ण सुधार लाते हैं) । यहां तक ​​कि उत्पादों पर घर के करीब हम में से हर एक का समर्थन करता है, हम उस लौकिक क्रॉस को एक या दूसरे डिग्री तक ले जाते हैं।
जस्टिन सीसी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.