2015-01-22 18 views
6

सेटअप: सेटअप का कहना है कि मेरे पास सॉफ़्टवेयर (जूलिया में) का एक उचित विस्तृत टुकड़ा है, जिसमें कई मॉड्यूल की बातचीत शामिल है। मुझे लगता है कि यह धीमा चल रहा है इससे पहले। आम तौर पर first culprit to check for is type unstable functions, यानी फ़ंक्शंस जहां संकलक समय से पहले निर्धारित करने में असमर्थ है कि आउटपुट प्रकार क्या होगा।जूलिया

प्रश्न: मैं इन प्रकार के अस्थिर कार्यों का पता कैसे लगा सकता हूं?

मैं वर्तमान में क्या करता हूं: मैं प्रोफाइलिंग टूल का उपयोग करता हूं, उदा। ProfileView.jl बाधाओं का पता लगाने के लिए @tholy का पैकेज, अस्थिर कार्यों को टाइप करने वाली धारणा के तहत यहां दिखाई देगा (उनके अत्यधिक रन-टाइम के कारण)। लेकिन वास्तव में अच्छा क्या होगा कुछ प्रकार के डिबगिंग टूल, जो नियमित रूप से चलने के बाद, उन कार्यों की सूची थूक देंगे जहां संकलक समय से पहले आउटपुट प्रकार निर्धारित करने में असमर्थ थे। क्या यह संभव है?

उत्तर

6

आप प्रोफाइलर कहते हैं कि बिट्स पर TypeCheck.jl कोशिश कर सकते हैं।

जूलिया 0.4 में @code_warntype भी है।

+0

हू। किसी भी तरह से मैं टाइपशेक पैकेज से पूरी तरह से अनजान था, और न ही यह मेरी खोज में दिखाया गया था। यही वह है जो मैं बाद में हूं :-) बहुत धन्यवाद! –

4

IainDunning के उत्कृष्ट सुझावों के अलावा, --track-allocation=user के साथ जुलिएया चलाना और के साथ analyze_malloc के साथ परिणामों का विश्लेषण करना एक उच्च स्तरीय अवलोकन प्राप्त करने का एक अच्छा तरीका है। सिद्धांत यह है कि टाइप-अस्थिरता स्मृति आवंटन को ट्रिगर करती है, इसलिए अनपेक्षित कोड की लाइनों की तलाश करना, बड़े आवंटन प्रकार अस्थिरता के सबसे गंभीर उदाहरणों को खोजने का एक अच्छा तरीका है।

आप track-allocationin the manual, और यहां तक ​​कि अधिक प्रदर्शन-विश्लेषण विकल्प described के बारे में अधिक जानकारी प्राप्त कर सकते हैं।

+0

बहुत दिलचस्प है। बहुत धन्यवाद। –