GHCi

2012-04-26 8 views
19

में समय मिलता है मैं एक अपेक्षाकृत धीमी प्रक्रिया (जिसे उपयुक्त धीमी नाम पर आधारित), और मैं बजाय संकलित करने के लिए होने के समय प्राप्त करने के लिए, की तरहGHCi

time $ slow [1,2,3,4,5] 
कंसोल (आरईपीएल) में

कुछ करना चाहते हैं कार्यक्रम और फिर रन टाइम।

क्या यह किया जा सकता है?

+3

ghci में? ': सेट + एस आपको सभी मूल्यांकन अभिव्यक्तियों के लिए समय और आवंटन आंकड़े प्राप्त करता है। यदि आप चाहें तो आप 'System.CPUTime.getCPUTime' का उपयोग करके स्वयं को' समय 'लिख सकते हैं। –

+1

बस ध्यान दें कि इंटरैक्टिव प्रोग्राम आपको संकलित प्रदर्शन के बारे में सटीक जानकारी नहीं देगा। – rotskoff

+5

आपको 'टाइम रनहास्केल foo.hs' और इसके अधिक ईमानदार साथी' ghc foo.hs -O2 && time/foo' पसंद हो सकता है। –

उत्तर

35

यदि आप जीएचसीआई में :set +s दर्ज करते हैं, तो समय और स्मृति जानकारी प्रत्येक अभिव्यक्ति के मूल्यांकन के बाद मुद्रित की जाएगी।

उदाहरण:

Prelude> :set +s 
Prelude> sum [1..2^20] 
549756338176 
it :: (Num a, Enum a) => a 
(0.34 secs, 169,197,008 bytes) 

ध्यान दें कि यह अभिव्यक्ति दुभाषिया में मूल्यांकन के रूप में के समय, अनुकूलन के बिना हो जाएगा, तो यह जरूरी कितनी देर तक बातें ले के एक सटीक उपाय नहीं होगा, या यहाँ तक वास्तविक संकलित कोड में, उसी कोड के दो संस्करणों में से कौन सा तेज़ होगा। इसके लिए, criterion बेंचमार्किंग लाइब्रेरी पर एक नज़र डालें।

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