लैम्ब्डा ऑप्टिमाइज़ेशन और इनलाइन फ़ंक्शंस: कंपाइलर का लाभ
निकोलाई जोसुटिस का यह कथन कि लैम्ब्डा सादे फ़ंक्शंस की तुलना में बेहतर कंपाइलर ऑप्टिमाइज़ेशन प्रदर्शित करता है, ने कई लोगों को चकित कर दिया है डेवलपर्स. इस दावे की जांच करते हुए, हम इस अनुकूलन लाभ के पीछे अंतर्निहित कारणों को उजागर करना चाहते हैं। फ़ंक्शन टेम्प्लेट विशेष रूप से उस लैम्ब्डा के लिए अनुरूपित फ़ंक्शन के इंस्टेंटेशन को ट्रिगर करता है। यह कंपाइलर को लैम्ब्डा इनवोकेशन को आसानी से इनलाइन करने की अनुमति देता है।
इसके विपरीत, फ़ंक्शन टेम्पलेट्स में पास होने पर फ़ंक्शन फ़ंक्शन पॉइंटर्स को नियोजित करते हैं। परंपरागत रूप से, कंपाइलर्स को फ़ंक्शन पॉइंटर्स के माध्यम से कॉल को इनलाइन करने में चुनौतियों का सामना करना पड़ता है। इनलाइन ऑप्टिमाइज़ेशन केवल तभी संभव है जब एन्क्लोजिंग फ़ंक्शन स्वयं इनलाइन हो। ]टेम्पलेट शून्य मानचित्र (इटर प्रारंभ, इटर अंत, एफ एफ) { के लिए (; प्रारंभ ! = अंत; आरंभ) *शुरू = एफ(*शुरू); }
इसे लैम्ब्डा के साथ लागू करना:int a[] = { 1, 2, 3, 4 }; मानचित्र (शुरुआत (ए), अंत (ए), [] (int n) { रिटर्न एन * 2; });एक अनुकूलित इंस्टेंटेशन में परिणाम:
टेम्पलेट
शून्य मानचित्र
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3