माप प्रदर्शन एक जटिल मामला है। अतीत में, जब एक ही ऑपरेटिंग सिस्टम के खिलाफ भाषाओं का परीक्षण किया गया था, वही हार्डवेयर चला रहा था और पुस्तकालयों का एक बहुत ही सीमित सेट था, तो यह बेंचमार्क बनाना संभव था जो एक रैखिक मीट्रिक दे सकता था जो सिस्टम को मापता था। यह लोगों को शून्य से दस तक चीजों का मूल्यांकन करने देगा, परिणाम को समेटेगा और अगले विषय पर जल्दी से आगे बढ़ेगा।
चीजें आधुनिक प्रणालियों के साथ अधिक जटिल हो गई हैं क्योंकि खाते में कई चर हैं।
कम से कम मोनो के मामले में वहाँ चर के बहुत सारे है कि सामने आते हैं:
कोड:
- उत्पन्न मूल कोड की गुणवत्ता।
- जिस गति पर देशी कोड उत्पन्न होता है।
- स्मृति कोड उत्पन्न करने के लिए और कोड
- अनुकूलन करने के लिए आवश्यक कोड जनरेटर मल्टी-थ्रेडेड है
- है उत्पन्न कोड धागा सुरक्षित
- यह सीपीयू विशिष्ट सुविधाओं का लाभ ले करता संकलन समय पर, या जेआईटी समय।
- यदि उपलब्ध हो तो यह सिमड निर्देशों का उपयोग कर सकता है।
- क्या भाषा बहु-कोर प्लेटफॉर्म पर अच्छी तरह से नक्शा रखती है
- क्या भाषा स्वचालित रूप से आपके कोड को ट्यून करने के लिए अनुकूलक के लिए पर्याप्त पैरामीटर प्रदान करती है (फोर्ट्रान की तरह)।
मेमोरी मैनेजमेंट:
- इस्तेमाल किया कचरा संग्रहण एल्गोरिथ्म
- से अधिक CPU के साथ जीसी पैमाने करता है?
- जीसी वृद्धिशील, या वास्तविक समय है?
- क्या यह बेहतर प्रदर्शन के लिए थ्रेड-स्थानीय स्टोरेज का समर्थन करता है?
- क्या यह सटीक, कॉम्पैक्टिंग, पीढ़ी, रूढ़िवादी और प्रत्येक का मिश्रण है।
एपीआई डिजाइन:
- विलंबता या बैंडविड्थ के लिए बनाया गया एपीआई
- एपीआई स्वचालित रूप से एक से अधिक CPU के लिए स्केलिंग का समर्थन कर रहे हैं।
- क्या आप जीपीयू को भारी कर्तव्य का काम बंद कर सकते हैं?
- अपने API का समर्थन स्ट्रीमिंग इंटरफेस
ये सभी बातें जटिल मामलों बहुत ज्यादा करते हैं और एक साधारण 0 करने के लिए 10 जवाब देना बहुत मुश्किल है।
आप कक्षाओं में भाषा विभाजन के थे, और आप एक सक्षम और प्रदर्शन के बारे में पता प्रोग्रामर, मैं इन कक्षाओं में दुनिया को विभाजित होगा मान हैं:
- टीयर 1: एक पेशेवर
द्वारा हाथ देखते विधानसभा भाषा
- टीयर 2: स्थिरता संकलित, दृढ़ता से टाइप किया भाषाओं: C/C++/फोरट्रान/
- टीयर 3: में कामयाब/JIT भाषाओं:। जावा/सी #/नेट/मोनो/बू/एफ #
- टीयर 4: गतिशील रूप से टाइप किया/JITed भाषाएं: Google V8, IronPython, IronRuby
- टियर 5: शुद्ध व्याख्या की गई भाषाओं: पायथन, पर्ल
- टियर 6: शुद्ध व्याख्या की गई भाषाओं, अपने स्वयं के अच्छे के लिए बहुत सी विशेषताओं के साथ।
लेकिन भाषाएं पूरी तस्वीर पेंट नहीं करती हैं, एपीआई जिन्हें आप उपभोग करेंगे, होस्टिंग ऑपरेटिंग सिस्टम और अन्य सुविधाओं का आपके परिणामों पर बड़ा प्रभाव पड़ेगा।
उदाहरण के लिए, हाल ही में मोनो में हमने मोनो के कोड जेन इंजन को एक अधिक उन्नत, अत्यधिक अनुकूलन इंजन (एलएलवीएम इंजन) के साथ बदलने के लिए समर्थन जोड़ा। यह पता चला है कि यह एक परीक्षण खोजने के लिए अविश्वसनीय रूप से कठिन था जहां एलएलवीएम का उपयोग करने का ओवरहेड अतिरिक्त मेमोरी उपयोग के लायक था: डेस्कटॉप और वेब अनुप्रयोगों ने बहुत अंतर नहीं दिखाया। और शायद यह इस तथ्य के कारण है कि ये ज्यादातर I/O बाध्य अनुप्रयोग हैं।
एलएलवीएम का उपयोग वैज्ञानिक और कम्प्यूटेशनल गहन अनुप्रयोगों के लिए उपयोगी था, लेकिन वास्तविक जीवन में यह मोनो की डिफ़ॉल्ट अनुकूलन सेटिंग्स से काफी अंतर नहीं आया।
मोनो के विनिर्देशों के लिए: हालांकि मोनो बोहेम के जीसी का उपयोग करता है, ज्यादातर लोगों को यह नहीं पता कि बोहेम को विभिन्न तरीकों से कॉन्फ़िगर किया जा सकता है। डिफ़ॉल्ट आम आदमी विन्यास वास्तव में बहुत शक्तिशाली नहीं है, लेकिन यह उन सभी के लिए काम करता है जो त्वरित जीसी चाहते हैं। मोनो इस मोड में बोहेम का उपयोग नहीं करता है, मोनो बोहेम को सटीक-मोड में काम करने के लिए बड़े पैमाने पर कॉन्फ़िगर करता है और साथ ही थ्रेड स्थानीय स्टोरेज, मल्टी-कोर जीसी और रिलीज-मेमोरी-टू-द-ओएस मोड का लाभ उठाता है।
स्रोत
2009-07-22 06:04:05
यह * मोनो * दिन-प्रतिदिन दिन में बढ़ रहा है :)। पूर्ण शब्दों में कोई विचार नहीं है। – akarnokd