मै मैक ओएस एक्स (10.5.7, ऐप्पल जेडीके 1.6.0_06-बी06-57) के तहत चल रहे गणितीय-गहन अनुप्रयोग को प्रोफाइल करने के लिए यूकिट 8.0 का उपयोग कर रहा हूं, और कुछ अजीब देखा है सीपीयू प्रोफाइलिंग परिणामों में व्यवहार।जावा में देशी विधियों को प्रोफाइल करना - अजीब परिणाम
उदाहरण के लिए - मैंने नमूनाकरण का उपयोग करके एक प्रोफाइलिंग रन किया था, जिसमें बताया गया था कि एप्लिकेशन के 10 मिनट के रनटाइम का 40% StrictMath.atan विधि में खर्च किया गया था। मुझे यह परेशान पाया गया, लेकिन मैंने इसे अपने शब्द पर लिया और अतान को बेहद सरल बहुपद फिट के साथ बदलने में थोडा समय बिताया।
जब मैं फिर से एप्लिकेशन चलाता था, तो यह लगभग उसी समय (लगभग 10 मिनट) के बराबर होता था - लेकिन मेरे एतान प्रतिस्थापन प्रोफाइलिंग परिणामों में कहीं भी दिखाई नहीं देता था। इसके बजाए, अन्य प्रमुख हॉटस्पॉट के रनटाइम प्रतिशत बस इसके लिए तैयार हो गए।
संक्षेप में:
परिणामों StrictMath.atan (देशी विधि)
कुल क्रम के साथ: 10 मिनट
विधि 1: 20%
विधि 2: 20%
विधि 3: 20%
StrictMath.atan: 40% सरलीकृत, शुद्ध जावा के साथ
परिणामों atan
कुल क्रम: 10 minu ट
विधि 1: 33%
विधि 2: 33%
विधि 3: 33%
(तरीके 1,2,3 किसी भी atan कॉल प्रदर्शन नहीं करते)
किसी भी विचार क्या है इस व्यवहार के साथ? मुझे ईजे-टेक्नोलॉजीज के जेपीरोफाइलर का उपयोग करके एक ही परिणाम मिला। ऐसा लगता है कि जेडीके प्रोफाइलिंग एपीआई मूल तरीकों के लिए गलत परिणामों की रिपोर्ट करता है, कम से कम ओएस एक्स
मुझे आश्चर्य नहीं होगा अगर 'एटान' एक आंतरिक तरीका था - विधि को कॉल करने के बजाय, समकक्ष मशीन कोड इनलाइन इंजेक्शन दिया जाता है। –
मैक ओएस एक्स 10.7 (और पहले के संस्करणों) पर स्ट्रिक्टैथ में विभिन्न विधियों के साथ-साथ मैंने इसका अनुभव किया है। –
तो क्या इस समस्या का कोई समाधान है? – ziggystar