2010-03-26 16 views
5

क्या कभी सोचने का कोई कारण है कि >> (हस्ताक्षरित) और >>> (हस्ताक्षरित) जावा में सही बिट-शिफ्ट ऑपरेटर अलग-अलग प्रदर्शन करेंगे? मैं अपनी मशीन पर कोई अंतर नहीं ढूंढ सकता।जावा >> और >>> सही शिफ्ट ऑपरेटरों के बीच कभी भी कोई प्रदर्शन अलग है?

यह पूरी तरह से एक अकादमिक प्रश्न है; मुझे यकीन है कि यह कभी भी बाधा नहीं होगी। मुझे पता है: लिखना सबसे अच्छा है कि आप सबसे महत्वपूर्ण क्या मतलब है; उदाहरण के लिए, 2 से विभाजन के लिए >> का उपयोग करें।

मुझे लगता है कि यह नीचे आता है कि आर्किटेक्चर के पास कौन से संचालन निर्देश के रूप में लागू होते हैं।

+0

मुझे लगता है कि दोनों को देशी सीपीयू निर्देशों (तार्किक/अंकगणित दाएं-शिफ्ट) में परिवर्तित कर दिया जाएगा, जो अंततः समान चक्र लेते हैं। – kennytm

+4

नहीं, मुझे >>> ऑपरेटर के रूप में देखने के लिए 2. –

+1

+1 द्वारा विभाजन के लिए '/ 2' का उपयोग करें। और संकलक अनुकूलन को कम से कम मत समझें। अक्सर इस स्तर पर अनुकूलन चीजों को और भी खराब कर सकता है। – Thirler

उत्तर

3

सं। आपका कंपाइलर इन्हें बाइटकोड में अनुवाद करेगा और JVM आपके आर्किटेक्चर के लिए बाइटकोड की व्याख्या करेगा। मुझे लगता है कि यह मानना ​​सुरक्षित है कि आपके आर्किटेक्चर में एक निर्देश सेट है जिसमें दोनों घड़ी चक्रों को कुछ घड़ी चक्रों में किया जाता है।

वैसे भी, इन ऑपरेटरों के व्यवहार में कोई अंतर है, इसलिए ऐसा नहीं है कि आप उन्हें केवल आदान-प्रदान कर सकें।

+0

@ टिम बेंडर: +1 ... x86 दुनिया में, * ">> 1" * चूंकि पी 4 केवल एक चक्र था और चूंकि पी 6 आर्किटेक्चर * ">> कोई भी" * केवल एक चक्र AFAIK है। – SyntaxT3rr0r

+0

मुझे लगता है कि यह मेरा प्रश्न था: क्या सामान्य वास्तुकला दोनों निर्देशों के रूप में लागू होते हैं? और हाँ जैसे मैंने कहा कि यह केवल उन मामलों में लागू होता है जहां व्यवहार समान है (nonnegative पूर्णांक)। –

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