2011-10-22 9 views
5

मेरे पास जावा एप्लिकेशन है, जो अपेक्षाकृत तेज़ नहीं है। मैंने इसे सुधारने के लिए बहुत सी खोज की हैं, लेकिन भाग्यशाली नहीं है।जावा में "सिंक्रनाइज़" कोड द्वारा कितना समय लगता है, यह जानने के लिए कैसे?

अब मैं कोड की समीक्षा कर रहा हूं, और पाया कि कोड में बहुत सारे synchronized कीवर्ड हैं। मैं सोच रहा हूं कि क्या उन्होंने ताले का इंतजार करने में बहुत अधिक समय लगाया है।

क्या यह देखने के लिए कोई उपकरण है कि उन्हें कितना समय लगता है? इस प्रकार यदि वे बहुत अधिक समय खर्च करते हैं तो मैं एक बेहतर समाधान पा सकता हूं।

+2

यदि आवश्यकतानुसार बड़े ब्लॉक पर 'सिंक्रनाइज़ेशन' किया जाता है तो वे अनावश्यक प्रतीक्षा के कारण प्रदर्शन को कम कर सकते हैं। – Cratylus

+1

क्या आपने कोई प्रोफाइलिंग टूल आजमाया है? – xappymah

उत्तर

4

मैं jvisualvm की थ्रेड मॉनिटर सुविधा का सुझाव देने जा रहा था और, स्क्रीन शॉट की तलाश करते समय, इस ब्लॉगपोस्ट में चला गया: Detecting Thread Contentions। यह सिर्फ एक स्क्रीनशॉट से बेहतर तरीका है :)।

लेकिन यहाँ यह वैसे भी है: thread contention in jvisualvm (छवि क्रेडिट: ऊपर उल्लिखित ब्लॉग पोस्ट)

1

एक अच्छा प्रोफाइलर उन विधियों को इंगित करने में सक्षम होगा जो धीमा हो रहे हैं, यह सिंक्रनाइज़ेशन से संबंधित नहीं हो सकता है। इसके अलावा प्रोफाइलर में धागे की स्थिति को देखकर पता चलता है कि सिंक्रनाइज़ेशन के कारण बहुत अधिक प्रतीक्षा चल रही है या नहीं। किसी भी मामले में जब तक सिंक्रनाइज़ किए गए कीवर्ड का कारण बिना इस्तेमाल किया जा रहा है, तो यह प्रदर्शन के लिए इसे हटाने के लिए उत्पादक काउंटरिव हो सकता है।

+0

यदि 'sunchronization' की आवश्यकता नहीं है तो यह प्रदर्शन हानि का कारण बन जाएगा। अगर' सिंक्रनाइज़ेशन 'की आवश्यकता है i) इसे ग्रैन्युलरिटी के उचित स्तर पर किया जाना चाहिए ii) अगर इसे हटा दिया जाता है तो यह प्रतिकूल नहीं होगा-यह एक गड़बड़ होगी – Cratylus

+0

उपयोगकर्ता384706 मैं सहमत हूं। ओपी को यह समझने की जरूरत है कि कोड सिंक्रनाइज़ क्यों किया जाता है, फिर उचित उपाय किया जा सकता है। –

1

तुल्यकालन की लागत आम तौर पर छोटे है। समस्या आमतौर पर सिंक्रनाइज़ेशन ब्लॉक में आप क्या करते हैं। सुनिश्चित करें कि आप कोई आईओ, (सॉकेट या नेटवर्क) नहीं करते हैं और आदर्श रूप से कोई सिस्टम कॉल नहीं करता है और लॉक टाइम सरल कार्यों के लिए सब-माइक्रोसॉन्ड होगा।

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