2009-07-10 13 views
8

में प्रत्येक फ़ाइल का प्रिंट संकलन समय दृश्य स्टूडियो 2005 प्रोजेक्ट में प्रत्येक सी ++ फ़ाइल के संकलन समय को प्राप्त करने के लिए मैं तालिका कैसे बना सकता हूं।दृश्य स्टूडियो सी ++

उत्तर

5

"उपकरण" -> "विकल्प" -> "परियोजनाओं और समाधान" -> "कुलपति ++ परियोजना सेटिंग्स"

टिक "समय बनाएँ"।

+1

गंभीरता से, यह इतना आसान है? मुझे अभी भी मेरा समाधान पसंद है! :) –

+0

बिल्डिंग समय विभिन्न बिल्ड प्रक्रियाओं के लिए समय देता है, प्रत्येक फ़ाइल के लिए नहीं। –

0

यह थोड़ी देर के बाद से मैंने संकलक के उस संस्करण का उपयोग किया है, लेकिन मुझे याद है कि यह उस फ़ाइल के नाम को प्रिंट करता है जो इसे कंसोल पर संकलित करता है (जब आप कमांड लाइन बिल्ड का उपयोग करते हैं)। अगर ऐसी बात है, तो आप एक प्रोग्राम है जो निम्नलिखित करता है लिख सकते हैं: कमांड लाइन संकलक पर

  1. CreateProcess, एक पाइप के लिए stdout पुनः निर्देशित पाइप से
  2. पढ़ें स्रोत फ़ाइल नाम की तलाश में
  3. हर बार एक स्रोत फ़ाइल नाम में देखा जाता है, वर्तमान टाइमस्टैम्प
  4. जब पाइप बंद कर दिया है ध्यान दें, प्रिंट आउट समय प्रत्येक फ़ाइल के लिए ले जाया

निर्माण इस दृष्टिकोण सी ++ में विकसित किया जा सकता है, यह होगा इसे लागू करने के लिए पर्ल जैसे टूल का उपयोग करना आसान हो सकता है।

+0

धन्यवाद ग्रेग एक अच्छा दृष्टिकोण है ... –

+0

एक पायथन लिपि लिखने के बारे में wat ?? –

+0

निश्चित रूप से, पाइथन इसके लिए समान रूप से उपयुक्त होगा। –

6

मैं विजुअल स्टूडियो 2010 का उपयोग कर रहा हूं लेकिन विजुअल स्टूडियो के अन्य संस्करणों में कुछ समान हो सकता है। वीएस -2010 में आप कमांड लाइन विकल्प/बीटी + में जोड़ सकते हैं जो प्रत्येक फ़ाइल को संकलित करने के लिए किए गए समय को प्रिंट करता है। तो "कॉन्फ़िगरेशन गुण" -> "सी/सी ++" -> "कमांड लाइन" -> "कमांड लाइन" -> "अतिरिक्त विकल्प" जोड़ें -> "अतिरिक्त विकल्प" जोड़ें/बीटी +

आउटपुट में/बीटी + विकल्प परिणाम सेट करना (जो दर्ज किया गया है लॉग फ़ाइल) लाइनों की तरह निम्नलिखित:

time(c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\c1.dll)=0.05110s < 25394686804 - 25394831194 > BB [C:\not-important\nlopt-2.4.2\direct\DIRect.c] 

जो मैं इस उत्तर के लिए धन्यवाद पाया https://blogs.msdn.microsoft.com/vcblog/2010/04/01/vc-tip-get-detailed-build-throughput-diagnostics-using-msbuild-compiler-and-linker/ पर इस विकल्प पर अधिक जानकारी https://stackoverflow.com/a/3513043/453436

तरीके समय लाइनों के आधार पर निकालने के लिए बहुत सारे हैं क्या आपके लिए उपलब्ध टूल्स मैंने इसे एक बाश खोल के नीचे खोज, grep और perl के संयोजन के साथ किया था। निम्नलिखित आपको पहले सबसे लंबे समय से संकलित संकलन समय देगा।

find . -name '*.log' | xargs grep time | perl -ne '$_ =~ /=(.*?)s.*\[(.*)\]/; print "$1 $2\n";' |sort -rn 
+0

धन्यवाद! मैं वीएस2013 का उपयोग करता हूं और यह वास्तव में प्रति फ़ाइल संकलन समय दिखाता है। जैसा कि "बिल्ड टाइमिंग" विकल्प का उपयोग किसी अन्य उत्तर में उल्लिखित है, केवल प्रति परियोजना संकलन/लिंक समय दिखाता है। – opetroch

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