2008-09-28 14 views
8

मैं समझता हूं कि आयरनपीथन .NET प्लेटफॉर्म पर पायथन का कार्यान्वयन है जैसे कि आयरन रूबी रूबी और एफ # का कार्यान्वयन कम या ज्यादा ओकैमल है।गतिशील .NET भाषा प्रदर्शन?

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

उत्तर

9

आयरनपीथन और आयरनरुबी डीएलआर - गतिशील भाषा रनटाइम के शीर्ष पर बनाए गए हैं - और फ्लाई पर सीआईएल (.NET द्वारा उपयोग किए गए बाइटकोड) के लिए संकलित किए गए हैं। वे सी # से धीमे हैं लेकिन अपने गैर-एनईटी समकक्षों की तुलना में फायरएयर तेजी से हैं। मेरे ज्ञान के लिए वहां कोई सभ्य मानक नहीं हैं, लेकिन आप अंतर देखेंगे।

+0

क्या आपके पास "गैर-एनईटी समकक्षों की तुलना में तेजी से" होने का कोई प्रमाण है? अत्याचारी 10 सेकंड स्टार्टअप समय से बचने के लिए कोई रास्ता भी है? – Unknown

1

वर्तमान में अधिकांश संबंधों में आयरनरुबी बहुत धीमी है। यह एमआरआई (मैटज़ रूबी कार्यान्वयन) की तुलना में निश्चित रूप से धीमी है, हालांकि कुछ स्थानों पर वे तेज़ी से हैं।

आयरनरुबी में बहुत तेज होने की संभावना है, हालांकि मुझे संदेह है कि वे कभी भी गति के संदर्भ में सी # के पास आ जाएंगे। ज्यादातर मामलों में यह कोई फर्क नहीं पड़ता। एक डेटाबेस कॉल संभवतः वेब अनुरोध की कुल अवधि का 9 0% बना देगा, उदाहरण के लिए।

मुझे संदेह है कि टीम पहले प्रदर्शन के बजाए भाषा-पूर्णता के लिए जाएगी। यह आपको 1.0 जहाजों के दौरान सबसे रूबी प्रोग्राम चलाने के लिए IronRuby & चलाने की अनुमति देगा, फिर वे जाने के बाद पेर्फ को बेहतर बना सकते हैं।

मुझे संदेह है कि आयरनपीथन की एक समान कहानी है।

7

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

आयरन रूबी के पास आयरनपीथन जितना तेजी से होने की संभावना है, क्योंकि आयरनपीथन तेजी से कई रोचक सुविधाओं को डायनामिक लैंग्वेज रनटाइम में निकाला गया है, जिस पर आयरनपीथन और आयरन रूबी (और प्रबंधित जावास्क्रिप्ट, डायनामिक वीबी, आयरनशेम, VistaSmalltalk और अन्य) बनाया गया है।

सामान्य रूप से, भाषा कार्यान्वयन की गति वास्तविक भाषा सुविधाओं से काफी स्वतंत्र है, और उसमें जाने वाले इंजीनियरिंग मानव-वर्ष की संख्या पर अधिक निर्भर है। IOW: गतिशील बनाम स्थैतिक कोई फर्क नहीं पड़ता, पैसा करता है।

उदा।, सामान्य लिस्प एक ऐसी भाषा है जो रूबी या पायथन से भी अधिक गतिशील है, और फिर भी वहां सामान्य लिस्प कंपाइलर हैं जो सी को अपने पैसे के लिए भी एक रन दे सकते हैं। अच्छा स्मॉलटाक कार्यान्वयन जावा के जितना तेज़ चलता है (जो कोई आश्चर्य नहीं है, क्योंकि दोनों प्रमुख जेवीएम, सन हॉटस्पॉट और आईबीएम जे 9, वास्तव में थोड़ा सा संशोधित स्मॉलटाक वीएम) या सी ++ हैं। पिछले 6 महीनों में, प्रमुख जावास्क्रिप्ट कार्यान्वयन (मोज़िला ट्रेसमोन्की, ऐप्पल गिलहरीफिश चरम और ब्लॉक पर नए बच्चे, Google वी 8) ने जीनोमस प्रदर्शन सुधार, 10x और अधिक, जावास्क्रिप्ट हेड-टू-हेड लाने के लिए बनाया है अन-अनुकूलित सी

1

आपको यह मानकर सही विचार मिल गया है कि आधुनिक .NET कार्यान्वयन का प्रदर्शन पूर्वजों और सी # के बीच होगा। कारण यह है कि सी # बहुत ही निकटता से .NET से मेल खाता है।

एफ # कोई ब्रेनर नहीं है क्योंकि सी # और ओकैमल के समान प्रदर्शन विशेषताएं हैं।

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

चीयर्स, जॉन हैरोप।

संबंधित मुद्दे