2008-10-20 23 views
56

यदि मैं जावैक के साथ डीबग जानकारी उत्पन्न करने पर स्विच करता हूं तो कक्षा फाइल 20-25% अधिक होती है। जावा प्रोग्राम चलाने पर यह कोई प्रदर्शन प्रभाव है? यदि हां, किस स्थितियों और कितने पर। मैं वर्गों को लोड करने पर थोड़ा प्रभाव की उम्मीद करता हूं क्योंकि फाइलें बड़ी हैं लेकिन यह न्यूनतम होनी चाहिए।क्या जावाक डीबग के बीच में कोई प्रदर्शन अंतर है?

उत्तर

56

किसी भी भाषा में, डीबगिंग जानकारी मेटा जानकारी है। इसकी प्रकृति से ऑब्जेक्ट फ़ाइलों का आकार बढ़ जाता है, इस प्रकार लोड समय बढ़ रहा है। डीबगर के बाहर निष्पादन के दौरान, यह जानकारी वास्तव में पूरी तरह से अनदेखा की जाती है। जैसा कि JVM spec में उल्लिखित (हालांकि स्पष्ट रूप से नहीं) डीबग जानकारी बाइटकोड स्ट्रीम के बाहर संग्रहीत की जाती है। इसका मतलब है कि निष्पादन समय पर कक्षा फ़ाइल में कोई अंतर नहीं है। यदि आप हालांकि सुनिश्चित करना चाहते हैं, तो इसे आजमाएं :-)।

Ps। अक्सर डिबगिंग के लिए ऑप्टिमाइज़ेशन बंद करने में मूल्य होता है। पर प्रदर्शन प्रभाव है।

+0

है javac अभी भी -O है? आखिरकार मुझे याद है कि यह बराबर था -जी: कोई नहीं। –

+2

सही। लोड समय प्रभावित होता है लेकिन निष्पादन का समय नहीं होता है। – kohlerm

+0

दरअसल सूरज जावा कंपाइलर का अनुकूलन ध्वज नहीं है। अनुकूलन मुख्य रूप से हॉटस्पॉट रनटाइम में होता है। संकलन समय पर अनुकूलित करने से वास्तव में अनुकूलित करने के लिए हॉटस्पॉट क्षमता में बाधा आ सकती है (पूरी जानकारी केवल संकलन समय पर उपलब्ध है)। –

14

डीबगिंग को बंद करने से बिल्कुल कोई फर्क नहीं पड़ता है। लेकिन एक बार जब आप डिबगिंग बंद कर देते हैं और ऑप्टिमाइज़ेशन चालू करते हैं, तो आपको एक अंतर देखना चाहिए, क्योंकि यह संकलन समय पर कुछ स्थिर अनुकूलन करता है। इस तरह आपका हॉट-स्पॉट अनुकूलित कोड भी रनटाइम पर तेज़ हो जाता है।

लेकिन अब तक, पूर्ण स्टैक-ट्रेस का अर्थ प्राप्त करने के बीच व्यापार या कुछ और उपयोगकर्ता-प्रदर्शन होने के बीच, मैंने हमेशा स्टैक-निशान के लिए मतदान किया। आखिरकार, उपयोगकर्ता तेजी से मशीन प्राप्त करने के लिए प्रत्येक वर्ष 1000 डॉलर खर्च करने के इच्छुक हैं, लेकिन आप अपनी समस्याओं को हल करने के लिए आपको सार्थक त्रुटि संदेश देने के लिए 15 मिनट बिताने के इच्छुक नहीं हैं।

सालों के बाद, मैं उपयोगकर्ता के 1000 डॉलर से 15 मिनट अधिक मूल्यवान होने के इच्छुक हूं। :)

5

कृपया ध्यान रखें कि जब से JDK1.3 javac किसी भी अनुकूलन झंडे, पर ध्यान नहीं देता "संकलन समय अनुकूलन अनावश्यक है"

+0

एनोटेशन: http://ant.apache.org/manual/Tasks/javac.html –

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