कार्यात्मक मध्यवर्ती रूप का नुकसान


16

मैं जावास्क्रिप्ट के समान भाषा के लिए एक ऑप्टिमाइज़र लिख रहा हूं, और एक मध्यवर्ती कोड प्रतिनिधित्व चुनने की आवश्यकता है। इन दिनों स्पष्ट / विशिष्ट पसंद स्टेटिक सिंगल असाइनमेंट (SSA) है।

हालाँकि, C में मॉडर्न कम्पाइलर कार्यान्वयन कार्यात्मक मध्यवर्ती रूप की भी चर्चा करता है, जिसका मूल अर्थ है मध्यवर्ती प्रतिनिधित्व के लिए शुद्ध कार्यात्मक (केवल स्थानीय चर के संदर्भ में शुद्ध, हीप डेटा अभी भी परिवर्तनशील नहीं है, और सीपीएस नहीं, बस सीधा letब्लॉक और टेल कॉल) और कारण के बारे में आसान होने के संदर्भ में कुछ फायदे हैं।

संभवत: यह नो-ब्रेनर नहीं है या हर कोई पहले से ही इस तरह के प्रतिनिधित्व का उपयोग कर रहा है, इसलिए मेरा सवाल यह है कि एसएसए की तुलना में कार्यात्मक मध्यवर्ती रूप में क्या नुकसान हैं?


3
इस मध्यवर्ती रूप पर आप किस तरह का विश्लेषण करने जा रहे हैं? SSA मृत कोड उन्मूलन, निरंतर प्रसार, आंशिक विशेषज्ञता और ऐसे के लिए महान है। यदि इस तरह का सामान आपके मेनू पर नहीं है, तो आप SSA को छोड़ सकते हैं और सरल विश्लेषण पास के लिए अधिक आराम से प्रतिनिधित्व का उपयोग कर सकते हैं। लेकिन, SSA फॉर्म जनरेट करना काफी मामूली काम है, और आप आसानी से SSA को CPS (और इसके विपरीत) में बदल सकते हैं, जो लाभ को दोगुना कर देता है।
SK- तर्क

हाँ, मैं पूर्ण मौन के लिए लक्ष्य कर रहा हूं, बहुत ज्यादा, और इनपुट भाषा और आउटपुट प्रारूप (शुरुआत में C ++) दोनों अनिवार्य भाषाएं हैं।
रिवालेस

SSA फ़ॉर्म बनाना काफी तुच्छ कार्य है, और आप आसानी से SSA को CPS में बदल सकते हैं, साथ ही आप CPS को SSA में परिवर्तित कर सकते हैं, जो लाभ को दोगुना कर देता है।
लियोन एलेक्सिस कार्डिनल

जवाबों:


1

SSA मृत कोड उन्मूलन, निरंतर प्रसार, आंशिक विशेषज्ञता और ऐसे के लिए महान है। यदि इस तरह का सामान आपके मेनू पर नहीं है, तो आप SSA को छोड़ सकते हैं और सरल विश्लेषण पास के लिए अधिक आराम से प्रतिनिधित्व का उपयोग कर सकते हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.