2012-04-13 5 views
19

शीर्षक मेरे प्रश्न को काफी हद तक बताता है: क्या हास्केल के टाइपक्लास से जुड़ा एक रनटाइम जुर्माना है, या क्या यह उन चीजों में से एक है (जैसे प्रेत प्रकार) बिना रनटाइम परिणाम के?क्या टाइपक्लास के साथ जुड़े रनटाइम पेनल्टी हैं?

उत्तर

16

टाइपक्लास की आवश्यकता एक प्रकार की संरचना के रूप में टाइप क्लास के सदस्यों को शामिल करने के लिए एक अतिरिक्त तर्क पारित करने की तरह है, क्योंकि दृश्यों के पीछे जीएचसी में जो कुछ भी है, उसके पीछे है।

यह कहा गया है कि, जीएचसी उस कोड को टाइप करने के लिए बहुत अच्छा है जो उस बिंदु पर टाइपक्लास का उपयोग करता है जहां इसकी कोई समस्या नहीं है, ओओ 2 उनमें से एक बहुत बड़ा प्रतिशत गायब हो जाता है, लेकिन बिना किसी ऑप्टिमाइज़ेशन स्तर के तर्क बहुत सस्ता है।

तो ओवरहेड एक प्रेत प्रकार या न्यूटाइप से अधिक है, लेकिन यह बहुत अधिक नहीं है।

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

+16

अतिरिक्त तर्क पास करना सस्ता है। उस पारित रिकॉर्ड में अज्ञात फ़ंक्शन को कॉल करना बहुत महंगा है। इसलिए कक्षाएं काफी महंगा हैं, जब तक कि संकलक उन्हें दूर करने का प्रबंधन नहीं करता है। – augustss

+1

मैं हमेशा अगस्तएसएस की उत्तर शैली की सराहना करता हूं। उच्च योग्यता वाले उत्तर प्रदान करना और इतना संक्षिप्त है कि कई पूछताछकर्ता अपने पूर्ण मूल्य (2011 से) को नहीं समझते हैं। मुझे कभी-कभी लगता है कि हमें एक बॉट बनाना चाहिए जो हमेशा अपने उत्तरों/टिप्पणियों पर टिप्पणी करता है "वाह, यह जानना अच्छा है!"। –

+2

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

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