2011-08-24 9 views
5

हमारे पास बहुत सी जीएनयू मेक-फाइलें हैं। मैं किसी भी प्रदर्शन बाधाओं को पहचानने के लिए निर्माण के दौरान उपयोग किए जाने वाले प्रत्येक लक्ष्य को पसंद करना चाहता हूं। क्या सुविधाजनक और स्वचालित तरीके से ऐसा करने के लिए कोई टूल या तकनीक है?जीएनयू का प्रदर्शन करने के लिए कैसे करें फाइलें

मैं प्रदर्शन परिणामों पर टैब रखने के लिए इन परिणामों को पार्स करना चाहूंगा क्योंकि निर्माण में परिवर्तन और बढ़ता है (लेकिन यह पहले से ही काफी बड़ा और जटिल है)।

उत्तर

4

मुझे लगता है कि मैं यहाँ से पहले इस सवाल को देखा है ...

आपको लगता है कि एक खोल, लेकिन कई बार इसके निष्पादन कहता है, और लक्ष्य के नाम के साथ कहीं न कहीं एक साथ परिणाम लिखते हैं कुछ के साथ खोल बदल सकते हैं। प्रत्येक लक्ष्य केवल एक बार बनाया जाएगा (या चलाने के लिए मना कर दिया जाएगा) तो आपको बस एक साथ समय जोड़ना होगा।

बहुत कच्चे उदाहरण: की जगह

make 

साथ

make SHELL='echo [email protected]: && time sh' 

आप बार एक साथ जोड़ने के लिए नहीं करना चाहते हैं, तो आप भी किसी भी तरह एक एकल में प्रत्येक लक्ष्य के लिए आदेशों में शामिल होने के लिए है आदेश। ऐसा करने का एक तरीका मेकफ़ाइल प्रीप्रोसेसिंग करके है, लेकिन विभिन्न कारणों से, यह किसी भी चीज़ के लिए अच्छी तरह से काम नहीं करेगा बल्कि मेकफ़ाइल के सबसे सरल है।

उदा। कुछ कोशिश कर रहे हैं

perl -0pe 's/([^:])\s*\n\t[@-]?/$1; /g' Makefile | make -f - SHELL='echo [email protected]: && time sh' 

उस दिशा में एक बहुत ही कच्ची स्टैब है।

कई वैकल्पिक दृष्टिकोण हैं, लेकिन मुझे लगता है कि इस सुविधा को बनाने के लिए एकमात्र वास्तविक समाधान है; जीएनयू मेक बहुत पोर्टेबल सी में लिखा गया है ताकि ऐसा करना मुश्किल न हो।

+0

'SHELL' ... चालाक –

1

बॉक्स के बाहर सोच रहा है: क्या आप रिकर्सिव का उपयोग कर बहुमूल्य इलेक्ट्रॉनों को बर्बाद कर रहे हैं, यानी जहां उपनिर्देशिका में सीडी नियम और कॉल फिर से बनाते हैं? तब यह तुम्हारी समस्या है। एक nonrecursive बनाने परिमाण के 2 आदेश से तेजी से हो सकता है।

विवरण देखने के लिए Recursive make considered harmful

0

निम्नलिखित आप समझते हैं कि प्रत्येक आदेश चल रहा है, और कितने गलत तरीके से इस्तेमाल किया चर की वजह से कई बार मदद मिलेगी:,: =

make SHELL='/bin/sh -x' 
0

आपको प्रोफ़ाइल में कोशिश कर रहे हैं

https://github.com/gojuno/make-profiler

यह अधिनियम: एक स्थिर Makefile, मेकअप प्रोफाइलर पर एक नजर है make के आसपास एक रैपर की तरह है जो preprocesses Makefile, लॉग एकत्र करता है और समय-समय पर कॉल-ग्राफ़ खींचता है। यह विशेष रूप से उपयोगी है यदि आप लंबे समय तक चलने वाली डेटा-प्रोसेसिंग पाइपलाइन बना रहे हैं।

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