Erlang 21

eprof




erlang

eprof

मॉड्यूल

eprof

मॉड्यूल सारांश

एर्लैंग के लिए एक टाइम प्रोफाइलिंग टूल

विवरण

मॉड्यूल eprof कार्यक्रमों के समय रूपरेखा के लिए कार्यों का एक सेट प्रदान करता है ताकि यह पता लगाया जा सके कि निष्पादन समय का उपयोग कैसे किया जाता है। प्रोफाइलिंग Erlang ट्रेस BIF का उपयोग करके की जाती है। प्रक्रियाओं के एक निर्धारित सेट के लिए स्थानीय फ़ंक्शन कॉल की ट्रेसिंग की जाती है जब प्रोफाइलिंग शुरू की जाती है, और जब प्रोफाइलिंग को रोका जाता है तो उसे अक्षम कर दिया जाता है।

Eprof का उपयोग करते समय, प्रोग्राम निष्पादन में मंदी की उम्मीद करें।

निर्यात

start () -> {ठीक है, Pid} | {त्रुटि, कारण}

प्रकार

एकत्रित डेटा की आंतरिक स्थिति रखने वाले Eprof सर्वर को प्रारंभ करता है।

start_profiling (रूटसेट) -> प्रोफाइलिंग | {त्रुटि, कारण}
start_profiling (रूटसेट, पैटर्न) -> प्रोफाइलिंग | {त्रुटि, कारण}
start_profiling (रूटसेट, पैटर्न, विकल्प) -> प्रोफाइलिंग | {त्रुटि, कारण}

प्रकार

Rootset में प्रक्रियाओं के लिए प्रोफाइलिंग शुरू करता है (और किसी भी नई प्रक्रिया को इनसे देखा जाता है)। किसी भी प्रॉफ़ाइड प्रक्रिया में गतिविधि की जानकारी Eprof डेटाबेस में संग्रहीत की जाती है।

Rootset , पीड्स और पंजीकृत नामों की एक सूची है।

यदि Rootset में सभी प्रक्रियाओं के लिए ट्रेसिंग को सक्षम किया जा सकता है या अन्यथा error हो तो फ़ंक्शन profiling देता है।

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

set_on_spawn विकल्प सक्रिय कॉल टाइम ट्रेसिंग करेगा जो सभी प्रक्रियाओं के लिए है, जो रूटसेट में प्रक्रियाओं द्वारा स्पॉन किया गया है। यह डिफ़ॉल्ट व्यवहार है।

stop_profiling () -> प्रोफाइलिंग_स्टॉप्ड | profiling_already_stopped

स्टॉप प्रोफाइलिंग start_profiling/1 या profile/1 साथ शुरू हुई।

प्रोफ़ाइल (मज़ा) -> प्रोफाइलिंग | {त्रुटि, कारण}
प्रोफ़ाइल (मज़ा, विकल्प) -> प्रोफाइलिंग | {त्रुटि, कारण}
प्रोफाइल (रूटसेट) -> प्रोफाइलिंग | {त्रुटि, कारण}
प्रोफाइल (रूटसेट, फन) -> {ओके, वैल्यू} | {त्रुटि, कारण}
प्रोफाइल (रूटसेट, फन, पैटर्न) -> {ठीक है, मूल्य} | {त्रुटि, कारण}
प्रोफाइल (रूटसेट, मॉड्यूल, फंक्शन, आर्ग्स) -> {ठीक है, मूल्य} | {त्रुटि, कारण}
प्रोफ़ाइल (रूटसेट, मॉड्यूल, फ़ंक्शन, आर्ग्स, पैटर्न) -> {ठीक है, मान} | {त्रुटि, कारण}
प्रोफ़ाइल (रूटसेट, मॉड्यूल, फ़ंक्शन, आर्ग्स, पैटर्न, विकल्प) -> {ठीक है, मान} | {त्रुटि, कारण}

प्रकार

यह फ़ंक्शन पहले एक प्रक्रिया P जन्म देता है जो Fun() मूल्यांकन करता है Fun() या apply(Module,Function,Args) । फिर, यह P और Rootset में प्रक्रियाओं को Rootset (और Rootset कोई नई प्रक्रिया शुरू हुई)। किसी भी प्रॉफ़ाइड प्रक्रिया में गतिविधि की जानकारी Eprof डेटाबेस में संग्रहीत की जाती है।

Rootset , पीड्स और पंजीकृत नामों की एक सूची है।

यदि Rootset में P और सभी प्रक्रियाओं के लिए ट्रेसिंग को सक्षम किया जा सकता है {ok,Value} तो Fun() / वैल्यू के साथ रिटर्न लौटाता है, या Fun() वैल्यू के साथ रिटर्न apply है, या Fun() apply होने पर एक्जिट Reason कारण फेल हो जाता है । अन्यथा यह {error, Reason} तुरंत लौटाता है।

set_on_spawn विकल्प सक्रिय कॉल टाइम ट्रेसिंग करेगा जो सभी प्रक्रियाओं के लिए है, जो रूटसेट में प्रक्रियाओं द्वारा स्पॉन किया गया है। यह डिफ़ॉल्ट व्यवहार है।

प्रोग्रामर को यह सुनिश्चित करना चाहिए कि तर्क के रूप में दिया गया फ़ंक्शन वास्तव में सिंक्रोनस है और फ़ंक्शन द्वारा मान वापस किए जाने के बाद कोई काम जारी नहीं है।

विश्लेषण () -> ठीक है
विश्लेषण (प्रकार) -> ठीक है
विश्लेषण (प्रकार, विकल्प) -> ठीक है

प्रकार

इस फ़ंक्शन को कॉल करें जब प्रति प्रक्रिया परिणाम प्रदर्शित करने के लिए प्रोफाइलिंग को रोक दिया गया है, अर्थात:

  • प्रत्येक प्रक्रिया द्वारा कितना समय उपयोग किया गया है, और
  • इस बार किस समारोह में खर्च किया गया है।

total विकल्प के साथ कॉल analyze जब प्रोफाइलिंग को प्रति फ़ंक्शन कॉल के परिणाम प्रदर्शित करने के लिए रोका गया है, तो यह उस फ़ंक्शन में है जिसमें समय व्यतीत किया गया है।

समय को कुल समय के प्रतिशत के रूप में और पूर्ण समय के रूप में दिखाया गया है।

लॉग (फ़ाइल) -> ठीक है

प्रकार

यह फ़ंक्शन सुनिश्चित करता है कि analyze/0,1,2 द्वारा प्रदर्शित परिणाम फ़ाइल File और स्क्रीन दोनों पर मुद्रित किए जाते हैं।

stop () -> रुका हुआ

Eprof सर्वर बंद कर देता है।