java - Strange performance behaviour -


मैं इस के साथ हैरान हूँ।

मेरी मशीन में

  • प्रत्यक्ष गणना: 375 एमएस
  • विधि गणना: 3594 एमएस, लगभग 10 बार SLOWER
  • यदि

क्या आप इसे अपने मशीन में देख रहे हैं?

  वर्ग परीक्षण {स्थिर लंबे COUNT = 50000 * 10000; निजी स्थिर लंबे समय से पहले; / * -------- METHOD --------- * / सार्वजनिक स्थिर अंतिम डबल हाइपोटिन्यूज़ (डबल ए, डबल ख) {वापसी गणित एसक्यूआरटी (ए * ए + बी * बी); } / * -------- टाइमर --------- * / सार्वजनिक स्थिर शून्य शून्य (स्ट्रिंग पाठ) {यदि (पहले == 0) {BEFORE = System.currentTimeMillis (); वापसी; } लंबे समय तक = System.currentTimeMillis (); लंबे समय तक = (अब - पहले); पहले = System.currentTimeMillis (); यदि (text.equals ("")) {वापसी; } स्ट्रिंग संदेश = "\ r \ n" + टेक्स्ट + "\ r \ n" + "समाप्त हो गया समय:" + बीता + "एमएस"; Println (संदेश); } सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] आर्ग्स) {डबल ए = 0.2223221101; डबल बी = 122333.167; समय निकालो(""); / * -------- डायरेक्ट कैलकुलेशन --------- * / के लिए (इंट I = 1; i & lt; COUNT; i ++) {मठ.sqrt (a * a + b * b) ; } GetTime ("प्रत्यक्ष:"); / * -------- METHOD --------- * / के लिए (इंट क्यू = 1; के & lt; COUNT; कश्मीर ++) {कॉम्प्लेटेन्यूज़ (ए, बी); } GetTime ("विधि:"); }}  

मेरे लिए शून्य अंतर।

यदि कुछ भी यह बेंचमार्किंग माइक्रो-ऑप्टिमाइजेशन के खतरों को प्रदर्शित करने के लिए जाता है। ऐसा मत करो यह समय की एक पूर्ण बेकार है।

इसके लिए आप एक अंतर क्यों देख रहे हैं: कोई विचार नहीं है। मैं Win7 Ultimate 64 पर स्वस्थ स्मृति sizings के साथ JDK 6u17 (32 बिट) का उपयोग कर रहा हूँ। शायद आप एक अलग संस्करण का उपयोग कर रहे हैं शायद यह जेआईटी संकलन के साथ एक मुद्दा है।

जो भी कारण, विधि कॉल करने और विधि कॉल करने में अंतर के बारे में चिंता करना एक अप्रासंगिक व्याकुलता है।


Comments