में टेल रिकर्सन बनाम फॉरवर्ड रिकर्सन एरलांग में परफॉर्मेंस के लिए आगे की रिकर्सन की तुलना में पूंछ रिकर्सन बेहतर है?
या erlang संकलक आगे भी रिकर्सन अनुकूलित करता है?
मेरा मतलब है, आगे की रिकर्सन के बजाय पूंछ रिकर्सन का उपयोग करने के कोई कारण हैं?
मेरी राय में, आगे की पुनरावृत्ति अधिक सुंदर दिखती है।एरलंग
एरलंग
उत्तर
पूंछ रिकर्सन आमतौर पर बेहतर होता है क्योंकि यह कम स्मृति का उपयोग करता है। आप केवल अगली कॉल पर जो चाहते हैं उसे लाएं, जो ढेर पर स्मृति उपयोग को कम करता है। साथ ही, जब पूंछ रिकर्सिव कोड को अनुकूलित किया जाता है, तो फ़ंक्शन रिटर्न जो आवश्यक नहीं हैं उन्हें फेंक दिया जाता है जो कुछ मामलों में इसे थोड़ा तेज बना देगा।
उदाहरण के लिए, यदि किसी फ़ंक्शन का रिटर्न वैल्यू किसी अन्य फ़ंक्शन पर कॉल है, तो मध्यस्थ कार्य को ढेर पर रखने की आवश्यकता नहीं है। तो कोड सीधे कॉलर को आंतरिक फ़ंक्शन से वापस कूदता है।
गैर-पूंछ रिकर्सन को एरलैंग कंपाइलर द्वारा कुछ मामलों में पूंछ रिकर्सन के लिए अनुकूलित किया गया है, लेकिन इस पर भरोसा न करें। जब भी आप कर सकते हैं पूंछ रिकर्सिव कार्यों को कोड करने के लिए यह एक अच्छी आदत बनाओ।
पूंछ रिकर्सन और आगे रिकर्सन पूरी तरह से अलग अवधारणाएं हैं। यह discussion देखें।
पूंछ रिकर्सिव है, और इस प्रकार अनुकूलित किया गया एक आगे की पुनरावृत्ति लिखना संभव है। एक आगे की पुनरावृत्ति लिखना भी संभव है जो कि पूंछ नहीं है: इस मामले में, इसे अनुकूलित नहीं किया जाएगा, यानी यह स्टैक स्पेस का उपभोग करेगा।
- 1. एरलंग में पीआईडी की सूची
- 2. विंडोज x64 RabbitMQ एरलंग पर्यावरण var (ERLANG_HOME)
- 3. एरलंग में हैश साइन क्या करता है?
- 4. क्या एरलंग नोड्स/वीएम पुनरारंभ के बीच अद्वितीय है?
- 5. क्या एरलंग वेबक्रॉलर के लिए सही विकल्प है?
- 6. एरलंग एक ही नोड पर प्रक्रियाओं के बीच संदेश कैसे पास करता है?
- 7. एरलंग मॉड्यूल पर कॉल किए जाने पर "नया" क्या करता है?
- 8. एक एरलंग खोल से निष्पादित करने के लिए एक फ़ंक्शन को मापने के लिए कैसे करें?
- 9. क्या मैं एरलंग शैल में तारों के रूप में छोटे पूर्णांक की प्रिंटिंग सूचियों को अक्षम कर सकता हूं?
- 10. एरलांग/ओटीपी
- 11. आप प्रक्रिया के माता-पिता के पीआईडी का निर्धारण कैसे करते हैं
- 12. एरलांग
- 13. पोर्टेबल एरलांग
- 14. एरलांग में स्ट्रिंग डिलीमिटिंग
- 15. डिफ़ॉल्ट प्रक्रिया झंडे
- 16. एरलांग का स्केलेबिलिटी का रहस्य क्या है?
- 17. एरलांग प्रोग्रामिंग: प्रोलॉग सीखना सीखेंगे?
- 18. Rabbitmq Ubuntu 12
- 19. एक दूरस्थ एरलांग नोड की निगरानी कैसे करें जो नीचे था और
- 20. php
- 21. Erlang: अनुप्रयोग पर्यावरण चर के रूप में सीएलआई झंडे (तर्क) तक कैसे पहुंचे?
- 22. एरलांग में मेरा आईओ कितनी धीमी गति से चलता है?
- 23. एक शेल कमांड
- 24. एरलांग डब्ल्यूएक्स: नए विजेट्स को कैसे जोड़ें
- 25. विंडोज XP पर rabbitmqctl.bat: नोड खरगोश @ MYPCNAME से कनेक्ट करने में असमर्थ: nodedown
- 26. वेब अनुप्रयोग के घटक-आधारित आर्किटेक्चर के हिस्से के रूप में ओटीपी/एरलांग का उपयोग
- 27. मिशन में सुरक्षित सी ++ महत्वपूर्ण रीयलटाइम ऐप्स
- 28. स्ट्रिंग में एरलांग शब्दों को कनवर्ट करें, या एरोडैंग बाइनरी
- 29. एरलांग
- 30. ई 11000 डुप्लिकेट कुंजी त्रुटि अनुक्रमणिका: MongoDb असामान्य त्रुटि