के साथ .NET अनुप्रयोगों को प्रोफाइल करना ऐसा लगता है कि कोई निःशुल्क * .NET प्रदर्शन प्रोफ़ाइल नहीं है जो लाइन-दर-रेखा आधार पर प्रोफ़ाइल कर सकता है। इसलिए, मैं प्रोफाइलिंग के लिए स्टॉपवॉच का उपयोग करने में देख रहा हूं।स्टॉपवॉच
* स्वतंत्रता के रूप में निःशुल्क, यानी लाइसेंस में व्यावसायिक अनुप्रयोग शामिल हैं।
संपादित करें: उन लोगों के जवाब में जिन्होंने मुझे "प्रोफाइलर खरीदना" बताया, मैं चाहूंगा, लेकिन अगर मैं इतना पैसा खर्च कर सकता हूं तो मैं इसे किसी और चीज़ पर खर्च करूंगा। मैंने अपने मालिक को यह समझाने की कोशिश की कि एक प्रोफाइलर इसके लायक है, लेकिन इसमें बहुत भाग्य नहीं है। यह सवाल ज्यादातर जिज्ञासा पर आधारित है। मैं स्टॉपवॉच को वास्तविक प्रोफाइलर के प्रतिस्थापन के रूप में कभी नहीं मानूंगा।
मेरे पास एक छोटा परीक्षण ऐप है (सी # में लिखा गया है) जो प्रति पंक्ति आधार पर स्टॉपवॉच का उपयोग करते समय प्रदर्शन अंतर को मापता है।
int n = 100;
BigInteger f = 1;
for (int i = n; i > 1; i--)
{
f *= i;
}
यहाँ पूर्ण कोड है:: परीक्षण कोड यह है http://pastebin.com/AvbQmT32
मैं कोड की प्रत्येक पंक्ति के लिए एक स्टॉपवॉच है। यह मेरा 'प्रोफाइलर' है। मेरे पास पूरे कार्यक्रम के लिए एक स्टॉपवॉच भी है। यह मेरा 'प्रोफाइलर प्रोफाइलर' है।
मेरे पास प्रोग्राम रिलीज़ मोड, किसी भी सीपीयू (x64 मशीन पर) के रूप में कॉन्फ़िगर किया गया है, और ऑप्टिमाइज़ेशन अक्षम हैं।
Line | Ticks
------------------------------|----------
|
Total time: | 359
जब मैं इसे चलाने प्रोफाइलर के साथ सक्षम है, मैं कुछ इस तरह मिलती है::
Line | Ticks
------------------------------|----------
|
int n = 100; | 3
BigInteger f = 1; | 12
for (int i = n; i > 1; i--) | 325
{ |
f *= i; | 539
} |
|
Total time: | 1710
Stopwatch overhead: | 831
आदर्श रूप में
जब मैं प्रोफाइलर अक्षम के साथ कार्यक्रम चलाने के लिए, मैं कुछ इस तरह मिल , कोड पर बिताए गए समय दोनों मामलों में बराबर होना चाहिए, लेकिन ऐसा प्रतीत होता है कि स्टॉपवॉच का ओवरहेड होता है जो अपने स्वयं के समय के भीतर प्रकट होता है।
अब, अक्सर प्रोग्राम की हर पंक्ति को प्रोफाइल करने की आवश्यकता नहीं होती है, क्योंकि यह आम तौर पर विभाजित और जीत दृष्टिकोण के साथ बेहतर काम करता है। आप आमतौर पर कोड के प्रोफाइल को प्रोफाइल करके शुरू कर सकते हैं, और किसी भी प्रदर्शन समस्याओं को कम कर सकते हैं।
इसके अलावा, अधिकांश अनुप्रयोगों में, कोड की औसत रेखा परीक्षण कार्यक्रम में से बहुत धीमी होगी। इसका मतलब है कि कम स्टॉपवॉच ओवरहेड होगा।
हालांकि, स्टॉपवॉच का उपयोग करते समय अभी भी ओवरहेड है, खासकर यदि आप बहुत उपयोग करते हैं।
तो सवाल करने के लिए नीचे:
रूपरेखा के लिए stopwatches उपयोग करने के लिए सबसे प्रभावी तरीका क्या है? मैं ओवरहेड को कम कैसे कर सकता हूं? क्या यह एक कथन के चारों ओर स्टॉपवॉच को लपेटने के लिए भी लायक है?
मैं आपकी प्रतिक्रिया की सराहना करता हूं।
व्यक्तिगत रूप से, मैंने खरीदे गए प्रोफाइलर्स (एएनटीएस प्रोफाइलर) हर प्रतिशत के लायक थे। मैं कभी भी "मैनुअल" प्रोफाइलिंग के बारे में कभी नहीं सोचूंगा। –
पूछने के लिए खेद है, लेकिन कुछ सिस्टम का उपयोग करने की जांच क्यों नहीं करें। डायग्नोस्टिक्स कक्षाएं? मेरा मानना है कि उदाहरण के लिए सीपीयू और राम उपयोग की जांच करने के लिए कक्षाएं शामिल हैं। – Eon
ईकाटेक प्रोफाइलर का मुफ्त संस्करण एक वाणिज्यिक प्रोजेक्ट में इसका उपयोग करने की अनुमति देता है: http://www.eqatec.com/Profiler/LicenseTerms.aspx – ken2k