नीचे दिए गए दो हास्केल फ़ंक्शंस केवल तभी भिन्न होते हैं जब इंडेक्स वैरिएबल अंतर्निहित या स्पष्ट है लेकिन प्रदर्शन में अंतर परिमाण के दो आदेशों से होता है।जीएचसी ऑप्टिमाइज़ेशन
इस समारोह 0.03 के बारे में सेकंड लेता है mfib 30 गणना करने के लिए: mfib 30 के लिए
let mfib = (map fib [0..] !!)
where
fib 0 = 0
fib 1 = 1
fib x = mfib (x-1) + mfib (x-2)
इस समारोह के बारे में 3 सेकंड लेता है:
let mfib i = map fib [0..] !! i
where
fib 0 = 0
fib 1 = 1
fib x = mfib (x-1) + mfib (x-2)
मैं इसे GHC इनलाइन के साथ क्या करना है अनुमान लगा रहा हूँ नियम और मिलान प्रदर्शन प्राप्त करने के लिए इनलाइन/नोलाइनलाइन प्रागमा जोड़ने की कोशिश कर रहे हैं।
संपादित करें: मैं समझता हूं कि आलसी सूची में लुकअप करने के लिए फ़िब फ़ंक्शन को याद करने के लिए उपयोग किया जा सकता है और क्यों फाइब की पारंपरिक परिभाषा बहुत धीमी है। मैं दूसरे समारोह में और पहले के रूप में काम करने के लिए याद करने की उम्मीद कर रहा था और समझ में नहीं आया कि यह क्यों नहीं है।
कुंजी * ज्ञापन * है। [यहां] देखें (http://stackoverflow.com/questions/11466284/how-is-this-fibonacci- कार्यक्षमता- स्मृतिबद्ध)। –