2011-04-05 17 views
7

मैंने क्लोजर के लिए प्रोफाइलिंग मैक्रोज़ देखा है लेकिन वे सभी विलुप्त समय का उपयोग करने लगते हैं। क्या CPU समय लेने का कोई तरीका है?मैं क्लोजर फ़ंक्शन निष्पादित करने के लिए CPU समय को कैसे माप सकता हूं?

+3

क्या https://github.com/hugoduncan/criterium आपको जो चाहिए वह देता है? –

+0

सीपीयू समय देने वाले मानदंड को याद नहीं है, लेकिन यह मानदंड –

+0

@ जिम-डाउनिंग +1 का उपयोग करने से बहुत अधिक भरोसेमंद है, मुझे लगता है कि मैं ThreadMXBean.getCurrentThreadCPUTime का उपयोग कर सकता हूं हालांकि मैं ' क्लोजर का उपयोग करके यह रेफरी के लिए थ्रेड पूल का उपयोग करता है, जिस तरह की गणना अमान्य बनाता है। क्या यह एक सही धारणा है जिसे मैं कई धागे के बिना बना रहा हूं? – kotarak

उत्तर

4

ऐसा कोई समाधान नहीं देखा गया।

हालांकि, आप इसे java.lang.management जावा पैकेज के साथ प्राप्त कर सकते हैं जो JVM की प्रबंधन/निगरानी का समर्थन करता है।

विशेष रूप से, ThreadMXBean.getCurrentThreadCPUTime() ऐसा लगता है कि यह वही होगा जो आप चाहते हैं।

आम तौर पर हालांकि मैं अपने बेंचमार्क को एक अनचाहे वातावरण में कोशिश करता हूं और चलाता हूं (यानी वह 100% सीपीयू प्राप्त कर सकता है) और आसानी से अनुमान लगाता है कि समय बीतने से लगभग CPU समय के बराबर होता है। फिर आप सामान्य क्लोजर बेंचमार्किंग टूल का उपयोग कर सकते हैं, उदा। Criterium

+0

के संदर्भ में – Zubair

+0

मुझे लगता है कि यह इस बात पर निर्भर करता है कि आप वास्तव में मापने की कोशिश कर रहे हैं - एप्लिकेशन में एक विशिष्ट थ्रेड या सभी धागे? – mikera

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