2009-02-26 6 views

उत्तर

12

अपना वर्कलोड परिभाषित करें और आपको "प्रदर्शन" का क्या अर्थ है।

यह लंबे समय तक एक प्रदर्शन गीक के रूप में मेरे लिए एक चल रही परेशानी है। चाहे कोई विशेष परिवर्तन "बेहतर प्रदर्शन करता है या नहीं, वर्कलोड पर, सबसे पहले और सबसे महत्वपूर्ण, निर्भर है, यानी, आप प्रोग्राम को क्या करने के लिए कह रहे हैं।

64 बिट जावा अक्सर भारी गणना भार वाले चीजों पर बेहतर प्रदर्शन करेगा। जावा प्रोग्राम, क्लासिकल में भारी I/O भार और भारी नेटवर्क लोड होते हैं; 32 बिट बनाम 32 बिट कोई फर्क नहीं पड़ता, लेकिन आमतौर पर ऑपरेटिंग सिस्टम करते हैं।

+5

विश्वास नहीं कर सकता कि यह जवाब आसान है। मेरे लिए 64 बिट लोड के लिए अधिक अनुकूल है जहां 64-बिट पता स्थान एक सहायता है और बाधा नहीं है। प्रत्येक पॉइंटर के लिए 2x लागत है, यदि आपको बहुत सारी डेटा की आवश्यकता है तो इसे अधिक से अधिक किया जा सकता है। एक वेब सर्वर ऑब्जेक्ट कैश 64 बिट जीतने का एक शानदार उदाहरण है। – Cheeso

+4

सूर्य कहता है कि यह जवाब गलत है। – Darron

+1

डारॉन, आपके पास इसके लिए एक उद्धरण है? चूंकि मैंने 10 वर्षों तक सूर्य के लिए काम किया है, और चूंकि उत्तर मूल रूप से "यह वर्कलोड पर निर्भर करता है और आप किस प्रकार के प्रदर्शन को मापने के बारे में परवाह करते हैं", I - इसे कैसे रखा जाए - आपको विश्वास न करें। –

-2

हां, खासकर यदि आपका कोड 64 बिट प्लेटफार्म को लक्षित करने के लिए बनाया गया है।

+1

एक 64 बिट प्लेटफॉर्म के लिए जावा कोड को कैसे लक्षित करता है? – TofuBeer

+0

32 बिट के बजाय 64 बिट पूर्णांक का उपयोग .... आदि। –

2

अधिकांश सीपीयू आर्किटेक्चर पर 32-बिट 64-बिट से तेज है, अन्य सभी बराबर हैं। 64-बिट पॉइंटर्स को 32-बिट्स के रूप में स्थानांतरित करने के लिए दोगुनी बैंडविड्थ की आवश्यकता होती है। हालांकि, x64 निर्देश सेट आर्किटेक्चर x86 पर थोड़ा सा संवेदना जोड़ता है, इसलिए यह तेज़ी से समाप्त होता है। लंबे प्रकार के हैंडलिंग की मात्रा आमतौर पर छोटी होती है।

बेशक यह जावा के कार्यान्वयन पर भी निर्भर करता है। साथ ही संकलक, आपको कार्यान्वयन में अंतर मिल सकता है; उदाहरण के लिए, एनआईओ 64-बिट पॉइंटर्स मानता है। यह भी ध्यान रखें कि सूर्य ने पहले ही x64 के लिए तेज सर्वर HotSpot कार्यान्वयन भेजा था। इसका मतलब था कि यदि आपने -d64 निर्दिष्ट किया है, तो आप क्लाइंट से सर्वर हॉटस्पॉट, आईआईआरसी पर भी स्विच करेंगे।

2

कुछ सुधार: 64 बिट्स पर युगल के साथ संचालन 32 बिट्स पर तैरने के साथ-साथ इंट की तुलना में 64 बिट पर लंबे समय तक चलने वाले समान गणना करते हैं।

तो यदि आप बहुत लंबे समय से कोड चला रहे हैं तो आपको वास्तविक सुधार दिखाई दे सकता है।

18

लगभग हमेशा 64 बिट धीमे हो जाएंगे।

HotSpot FAQ से सूर्य के शब्दों में:

प्रदर्शन अंतर की तुलना एक आवेदन स्पार्क पर एक 64-बिट मंच एक 32-बिट मंच बनाम पर चल रहा है 10-20% के आदेश पर है गिरावट जब आप 64-बिट VM पर जाते हैं। AMD64 और EM64T प्लेटफ़ॉर्म पर पर पहुंचने वाले पॉइंटर की मात्रा पर 0-15% से अंतर 0-15% से भिन्न होता है।

लिंक पर अधिक जानकारी हैं।

+0

यह x86_64 पर लगभग हमेशा तेज़ है, जैसा उपर्युक्त अनुच्छेद –

3

64-बिट बेहतर प्रदर्शन करते हैं यदि आपको 1.2 जीबी से अधिक की आवश्यकता है। कुछ प्लेटफार्मों पर आप 3 जीबी तक पहुंच सकते हैं, लेकिन यदि आप 4 - 384 जीबी चाहते हैं उदाहरण के लिए, 64-बिट आपका एकमात्र विकल्प है।

मेरा मानना ​​है कि अज़ुल 384 जीबी जेवीएम का समर्थन करता है, क्या किसी को पता है कि आप उच्च जा सकते हैं?

+0

1.2 जीबी या क्या है? याद? – johnny

+0

@ जॉनीनी हां, 32-बिट विंडोज सिस्टम पर 1.2 जीबी मेमोरी। –

0

मेरा अनुभव अन्य उत्तरों से अलग है।

जावा 64 बिट 32 बिट से तेज हो सकता है। कम से कम मेरे परीक्षणों के साथ यह हमेशा था!पॉइंटर तर्क मान्य नहीं है जब 4 जीबी से कम उपयोग किया जाता है क्योंकि तब 64 बिट-वीएम आंतरिक रूप से शॉर्ट पॉइंटर्स का भी उपयोग करेगा। हालांकि आप 64 बिट सीपीयू के तेज निर्देश सेट प्राप्त करते हैं!

मैंने विंडोज 7 और जेडीई 1.8.0_144 के साथ इसका परीक्षण किया, लेकिन शायद असली कारण अलग आंतरिक जेवीएम सेटिंग है। जब आप 64-बिट JVM का उपयोग करते हैं तो यह "सर्वर" मोड में शुरू होता है, जबकि 32-बिट VM "क्लाइंट" मोड में शुरू होता है।

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