जीएचसी में लिखे गए हास्केल प्रोग्राम को प्रोफाइल करते समय, टाइपक्लास कार्यों के नामों को किसी अन्य से एक उदाहरण के कार्यान्वयन को अलग करने के लिए .prof फ़ाइल में उलझा हुआ है। मैं इन नामों को कैसे पता लगा सकता हूं कि यह किस प्रकार का उदाहरण है?जीएचसी प्रोफाइलर आउटपुट
import Data.List (foldl')
sum' = foldl' (+) 0
data Fast = Fast
instance Show Fast where
show _ = show $ sum' [1 .. 10]
data Slow = Slow
instance Show Slow where
show _ = show $ sum' [1 .. 100000000]
main = putStrLn (show Fast ++ show Slow)
मैं -prof -auto-all -caf-all
साथ संकलन और +RTS -p
साथ चलाएँ:
उदाहरण के लिए, मैं निम्नलिखित कार्यक्रम है, जहां प्रकार Fast
और Slow
दोनों को लागू Show
है लगता है। उत्पन्न हो जाता है कि .prof फ़ाइल में, मुझे लगता है कि शीर्ष लागत केन्द्रों हैं:
COST CENTRE MODULE %time %alloc
show_an9 Main 71.0 83.3
sum' Main 29.0 16.7
और पेड़ में, मैं वैसे ही देखते हैं (अप्रासंगिक लाइनों को छोड़ते हुए):
individual inherited
COST CENTRE MODULE no. entries %time %alloc %time %alloc
main Main 232 1 0.0 0.0 100.0 100.0
show_an9 Main 235 1 71.0 83.3 100.0 100.0
sum' Main 236 0 29.0 16.7 29.0 16.7
show_anx Main 233 1 0.0 0.0 0.0 0.0
मैं कैसे समझ कर बाहर Slow
का show
का कार्यान्वयन है और Fast
नहीं है?