क्यों अजगर इन नहीं है?
मुझे यकीन नहीं है कि आपको क्यों लगता है कि कोई पायथन कार्यान्वयन नहीं है जो प्रदर्शन के बारे में परवाह करता है। PyPy , IronPython , और Jython सभी औद्योगिक-शक्ति, उत्पादन-तैयार पायथन कार्यान्वयन हैं जो प्रदर्शन के लिए देखभाल करते हैं। पिस्टन एक इन-डेवलपमेंट कार्यान्वयन है जिसे विशेष रूप से प्रदर्शन के लिए बनाया गया था । पाइथन के प्रदर्शन को सुधारने के लिए अनलाडेन स्वोलो और साइको भी प्रोजेक्ट थे।
हालाँकि, यह तथ्य कि CPython उपयोगकर्ता अन्य सभी कार्यान्वयनों के कुल संयुक्त उपयोगकर्ता आधार को बहुत कम कर देते हैं, जो कि Unladen Swallow को समुदाय द्वारा अस्वीकार कर दिया गया था, कि इनमें से अधिकांश परियोजनाएं या तो मृत हैं या डेवलपर्स को आकर्षित करने के लिए संघर्ष कर रहे हैं, आपको पायथन के बारे में कुछ बताना चाहिए। सामुदायिक मूल्यों का प्रदर्शन।
यह उत्तर पायथन समुदाय की विशिष्ट मानसिकता का एक अच्छा उदाहरण है: प्रदर्शन समस्याओं को ठीक करने के बजाय, वे केवल पायथन में नहीं अपना कोड लिखना पसंद करेंगे।
मैं PyPy और IronPython को देख रहा हूं, जो दोनों गति का दावा करते हैं। PyPy मुझे समझ में नहीं आता है कि एक व्याख्या भाषा में पायथन में लिखा गया पायथन कार्यान्वयन सी में संदर्भ कार्यान्वयन से अधिक तेज़ कैसे होगा।
सबसे पहले: यह मायने नहीं रखता है कि कंपाइलर किस भाषा में लिखा गया है। आखिरकार, कंपाइलर को केवल एक बार निष्पादित किया जाता है , इसलिए भले ही यह धीमा था, लेकिन इससे कोई फर्क नहीं पड़ता: कंपाइलर का प्रदर्शन अप्रासंगिक है, जो प्रासंगिक है संकलक के आउटपुट का प्रदर्शन है ।
दूसरे, चूंकि यह केवल यह बताता है कि संकलक का उत्पादन कितना तेज है, और संकलक को पायथन में लिखा गया है, अर्थात यह जिस भाषा में संकलित है, वह वास्तव में खुद को संकलित करके खुद को तेज बना सकता है।
तीसरा, "व्याख्या की गई भाषा" जैसी कोई चीज नहीं है। एक भाषा गणितीय नियमों और प्रतिबंधों का एक समूह है। यह एक विनिर्देश है। कागज का एक टुकड़ा। कोई भाषा संकलित या व्याख्या नहीं की जाती है। एक भाषा अभी है । संकलन और व्याख्या भाषा के कार्यान्वयन के लक्षण हैं , अधिक सटीक रूप से, एक संकलक या दुभाषिया (दोह!), भाषा नहीं। हर भाषा को एक कंपाइलर द्वारा लागू किया जा सकता है। प्रत्येक भाषा को दुभाषिया द्वारा कार्यान्वित किया जा सकता है। आप यांत्रिक रूप से एक दुभाषिया से एक संकलक और एक संकलक से एक दुभाषिया उत्पन्न कर सकते हैं।
लेकिन यह सब वास्तव में वास्तव में मायने नहीं रखता है, क्योंकि PyPy वास्तव में Python में नहीं लिखा गया है। यह RPython में लिखा है । RPython में दो भाग होते हैं, RPython प्रोग्रामिंग लैंग्वेज और RPython फ्रेमवर्क।
RPython प्रोग्रामिंग भाषा Python नहीं है। यह एक अलग प्रोग्रामिंग भाषा है। RPython एक सांख्यिकीय रूप से टाइप की जाने वाली प्रोग्रामिंग भाषा है, जो लगभग जावा के रूप में अमूर्त पर समान स्तर पर है, लगभग C के समान ही प्रदर्शन के साथ। RPython Python का एक सिंटैक्टिक और सिमेंटिक उपसमुच्चय है, जिसका अर्थ है कि प्रत्येक RPython प्रोग्राम एक मान्य पायथन प्रोग्राम है और यह कर सकता है पायथन कार्यान्वयन द्वारा चलाया जा सकता है (आमतौर पर परिमाण धीमा करने के कई आदेश हैं, लेकिन यह डिबगिंग के लिए अभी भी उपयोगी है क्योंकि आपको पायथन के सभी उपकरणों तक पहुंच प्राप्त होती है, और व्याख्या तुरंत शुरू होती है, जबकि भाषा कार्यान्वयन को संकलित करने में आमतौर पर 5-10 मिनट लगते हैं। ), लेकिन काफिला सच नहीं है।
RPython फ्रेमवर्क RPython प्रोग्रामिंग भाषा में उच्च-प्रदर्शन गतिशील भाषा कार्यान्वयन लिखने के लिए एक रूपरेखा है। इसमें कचरा संग्रहकर्ता, ऑब्जेक्ट स्पेस, मेटा-ऑब्जेक्ट प्रोटोकॉल, पूर्व-परिभाषित ऑब्जेक्ट, प्रकार, और संचालन, और इसी तरह शामिल हैं। लेकिन मुकुट का गहना एक दुभाषिया से जेआईटी संकलक को स्वचालित रूप से उत्पन्न करने की अपनी क्षमता है: यदि आप आरपीथॉन फ्रेमवर्क में एक भाषा को लागू करते हैं, तो आपको केवल एक दुभाषिया लिखना होगा, आरपीथॉन फ्रेमवर्क जेआईटी का ख्याल रखता है।
केवल PyPy ही नहीं, RPython प्लेटफॉर्म पर भी भाषा के बहुत सारे कार्यान्वयन हैं ।
IronPython, एक ही विचार लेकिन मैं यह नहीं देखता कि .NET फ्रेमवर्क कैसे गति बढ़ाएगा।
ISO CLI के अधिकांश कार्यान्वयन, जैसे Microsoft, या मोनो द्वारा विभिन्न .NET वेरिएंट में परिष्कृत कचरा संग्रहकर्ता, ऑप्टिमाइज़र और कंपाइलर शामिल हैं। ज्यथॉन और जावा कार्यान्वयन के लिए भी यही सच है।
आयरनपाइथन एक संकलक है, यह पायथन सोर्स कोड को डीएलआर पेड़ों (डीएलआर डायनेमिक लैंग्वेज रनटाइम) के रूप में संकलित करता है, जिन्हें बाद में सीआईएल बाइट कोड के लिए संकलित किया जाता है, जो बाद में फिर से देशी मशीन कोड के लिए संकलित किया जाता है।