मेरे पास एक TH-heavy फ़ाइल है जो संकलन के लिए लगभग 30 सेकंड लेती है। मेरे टेम्पलेट हास्केल के प्रदर्शन को डीबग करने में सहायता के लिए मैं कुछ तकनीकों का उपयोग कर सकता हूं?प्रोफाइलिंग टेम्पलेट हास्केल
उत्तर
यदि मैं सही ढंग से TH के संकलन प्रवाह को समझता हूं, तो सामान्य हैकेल फ़ंक्शंस को संकलित समय पर विभाजित करते समय निष्पादित किया जा रहा है। लेकिन आप निश्चित रूप से रनटाइम पर अपने आप पर दौड़ सकते हैं।
उदाहरण के लिए आपके पास TH-heavy फ़ाइल में $ (foo x y ...) जैसा कुछ है। एक और फाइल बनाएं और 'foo x y' पर कॉल करें लेकिन परिणाम को विभाजित न करें। फिर आप सामान्य रूप से 'foo' प्रोफाइल करने में सक्षम होंगे। अगर एएसटी पीढ़ी के चरण में बाधा है तो आप इसका पता लगाएंगे। आलस्य पर विचार करना मत भूलना।
जीएचसी 8 के रूप में, यह -fexternal-interpreter के साथ किया जा सकता है।
प्रोफाइलिंग के साथ TH फ़ंक्शन को परिभाषित करने वाली लाइब्रेरी को संकलित करें, फिर कोड को संकलित करें * जो THH फ़ंक्शन का उपयोग जीएचसी विकल्पों -fexternal-interpreter -opti+RTS -opti-p
के साथ एक स्प्लिसे में करता है। इसे ghc-iserv-prof.prof
नामक फ़ाइल का उत्पादन करना चाहिए।
इस दृष्टिकोण का लाभ है कि आप Q
मोनैड की पूर्ण कार्यक्षमता का उपयोग कर सकते हैं।
* उसी पुस्तकालय परियोजना में एक बेंचमार्क सूट TH पुस्तकालय के रूप में (लेकिन एक अलग एचएस-स्रोत-डीआईआर में) भी काम करता है। यह एक ही पुस्तकालय में परिभाषित और उपयोग किए गए एक TH फ़ंक्शन के साथ भी काम कर सकता है, लेकिन मुझे लगता है कि आप तब व्याख्या किए गए कोड का प्रोफाइल करेंगे।
- 1. एक हास्केल प्रोग्राम प्रोफाइलिंग
- 2. हास्केल प्रोफाइलिंग - घड़ी_gettime
- 3. प्रोफाइलिंग टेम्पलेट मेटाप्रोग्राम संकलन समय
- 4. टेम्पलेट हास्केल
- 5. टेम्पलेट हास्केल और आईओ
- 6. हास्केल एलेक्स - आवरण टेम्पलेट
- 7. टेम्पलेट हास्केल त्रुटि "व्युत्पन्न"
- 8. टेम्पलेट हास्केल: जीएचसीआई
- 9. डी कंपाइलर प्रोफाइलिंग
- 10. प्रोफाइलिंग अवधारणाएं प्रोफाइलिंग के लिए उपयोगी हैं?
- 11. क्या डेरिव और टेम्पलेट हास्केल या अन्यथा
- 12. ग्राफिक्स प्रोफाइलिंग
- 13. प्रोफाइलिंग सी ++?
- 14. प्रोफाइलिंग उपकरण?
- 15. प्रोफाइलिंग मेवेन
- 16. प्रोफाइलिंग एसबीटी
- 17. प्रोफाइलिंग स्टैक
- 18. Django (?) कुछ पाइथन प्रोफाइलिंग
- 19. हास्केल
- 20. ngen और प्रोफाइलिंग
- 21. प्रोफाइलिंग सी #/.NET अनुप्रयोग
- 22. आईआईएस 7 प्रोफाइलिंग
- 23. प्रोफाइलिंग jQuery अनुप्रयोग
- 24. प्रोफाइलिंग रेडिस मेमोरी उपयोग
- 25. जावा स्प्रिंग एप्लिकेशन प्रोफाइलिंग
- 26. प्रोफाइलिंग WPF अनुप्रयोग
- 27. लिनक्स एप्लिकेशन प्रोफाइलिंग
- 28. एक मैक्स-फ़ंक्शन प्रोफाइलिंग
- 29. सेलेरी कार्य प्रोफाइलिंग
- 30. सरल कैश प्रोफाइलिंग API
मुझे वास्तव में पता चला है कि, कहा गया फ़ाइल में, TH तुरंत चलता है और हर समय जीएचसी द्वारा उदाहरण संकल्प करने के लिए खर्च किया जाता है। हालांकि इस सवाल में अभी भी रुचि है। –
शायद आप एक [Quasi] (http://hackage.haskell.org/packages/archive/template-haskell/2.8.0.0/doc/html/Language-Haskell-TH-Syntax.html#t:Quasi) बना सकते हैं कुछ मोनैड के लिए उदाहरण जो आईओ में रन टाइम पर चलता है, तो आप मानक प्रोफाइलिंग टूल का उपयोग कर सकते हैं। मोनैड में संशोधित जानकारी और स्थान (शायद TH द्वारा उत्पन्न किया गया) की एक सूची हो सकती है, ताकि आप अभी भी पुनः उपयोग कर सकें। – bennofs