2008-10-14 7 views
13

मैं जावा प्लेटफ़ॉर्म में एक पूर्ण n00b हूं, मैं जानना चाहता हूं कि 64 बिट जेआरई के लाभ प्राप्त करने के लिए मुझे अपने कोड में कुछ भी बदलने की आवश्यकता है या नहीं?64 बिट जावा प्लेटफ़ॉर्म के लाभ

या ऐसा कुछ ऐसा है जब मैं इसे "जावा-डी 64" के साथ शुरू करता हूं जो इसे कुछ टर्बो मोड में चलाएगा?

आपकी सहायता की अत्यधिक सराहना की जाती है

उत्तर

3

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

1

हां, आपको कुछ भी बदलने की आवश्यकता नहीं है। यह जेआरई अलग है, न कि आपके द्वारा लिखे गए कोड।

5

क्योंकि जेवीएम, जहां कोड निष्पादित किया गया है, वही व्यवहार करना चाहिए (पूर्णांक हमेशा 32 बिट हस्ताक्षरित होते हैं, आदि), आपके कोड को समान रूप से चलाने के लिए (सिद्धांत में) गारंटी दी जाती है, इससे कोई फर्क नहीं पड़ता कि आप इसे किस प्लेटफ़ॉर्म पर चलाते हैं।

32/64 बिट अंतर यह आता है कि JVM रनटाइम को अनुकूलित करने में सक्षम है। इसलिए, जबकि निष्पादित बाइटकोड एक ही रहता है, यह एक अलग तरीके से अनुकूलित (या शायद नहीं) हो सकता है।

संक्षेप में, जावा चलाने वाली 64-बिट सिस्टम 32-बिट सिस्टम समकक्ष से कोड को तेज़ी से निष्पादित कर सकती है।

7

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

एकमात्र लाभ तब आता है जब आप 64 बिट गणना कर रहे हैं, उदाहरण के लिए अपने कोड में 'लम्बे' का उपयोग करना या यदि आपके ऐप को 4 जीबी से अधिक स्मृति की आवश्यकता है।

+0

कम से कम विंडोज़ पर एक लाभ नहीं है, 1.5 जीबी की तुलना में अधिक मेमोरी का उपयोग करने की संभावना है? 32-बिट जावा प्रक्रिया के लिए ऐसी कुछ सीमा है। http://mystyleit.com/blogs/mystyleit/archive/2009/05/27/32bit-windows-memory-and-java.aspx – Jonik

+1

नवीनतम 64-बिट JVMs संदर्भों को निर्दिष्ट करने के बारे में थोड़ा अधिक स्मार्ट नहीं हैं? यानी, केवल 32-बिट संदर्भों का उपयोग करते हुए यदि इसे पूर्ण 64-बिट की आवश्यकता नहीं है। मुझे लगता है कि मैंने कहीं कहीं पढ़ा है। –

13

मेरा पिछला संस्करण, जबकि झूठी नहीं, एक त्वरित लिखित oversimplification था।

32 से 64 बिट्स में बदलना स्वचालित रूप से आपके एप्लिकेशन को तेज़ी से नहीं चलाएगा, कुछ मामलों में यह विपरीत हो सकता है। "ऋणात्मक" पक्ष पर JVM में मेमोरी पॉइंटर्स के डी-रेफरेंसिंग को 32 बिट से 64 बिट पॉइंटर्स के साथ लंबा समय लग सकता है। एक 16 जीबी ढेर का एक पूर्ण कचरा इकट्ठा और संयोजन 2 जीबी ढेर के साथ अधिक समय लेगा।

सकारात्मक पक्ष पर: 64 बिट प्रोसेसर निर्देश जो 32 बिट से अधिक प्रभावी होते हैं। 64 बिट जेवीएम आपको एक ढेर आकार 2^32 गुणा से थोड़ा बड़ा करने की अनुमति देगा, थोड़ा कम, 4 जीबी जिसे आप 32 बिट के साथ प्राप्त कर सकते हैं। (यदि आप उस राशि की मात्रा खरीद सकते हैं) कुछ जेवीएम संकुचित संदर्भों के साथ काम कर सकते हैं यदि आपके पास 4 जीबी से कम ढेर आकार है, तो आपको 64 बिट डी-रेफरेंसिंग मूल्य का भुगतान किए बिना 64 बिट निर्देशों का लाभ मिल रहा है ।

यदि आपके पास एक अच्छा जेवीएम है तो मैं ढीले आकार के मामले में 64 बिट्स पर जाऊंगा, बस तैयार रहें कि आपको वास्तव में एक बड़ा ढेर होने के लिए प्रदर्शन हिट करना पड़ सकता है।

8

मुझे नहीं लगता कि 64 बिट जेवीएम आवेदन के प्रदर्शन को प्राप्त करेगा? कैसे?

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

एक और बात यह है कि 64 बिट प्रोसेसर तेजी से कर सकते हैं। परमाणु लेखन/64 बिट संख्याओं के पढ़ने। यदि आप 64 बिट संख्याओं (जावा में लंबे समय तक) के साथ काम करते हैं तो 64 बिट प्रोसेसर बेहतर होंगे, क्योंकि उनके पास उस तरह की संख्याओं के साथ काम करने के लिए मशीन सीएएस निर्देश हैं।

+2

एएमडी 64 निर्देश सेट कार्यक्रमों के लिए अधिक रजिस्टरों का खुलासा करता है, इस प्रकार संभावित निष्पादन गति सुधार – Sebastian

2

क्या आपके पास अपने आवेदन कोड में कोई जेएनआई है? तो शायद आपको 32 बनाम 64 बिट देशी बाइनरी के बारे में चिंता करने की ज़रूरत है।

32 या 64 आपके जावा कोड के समान ही है। प्रदर्शन पहलुओं को पहले से ही पिछले पोस्टर्स द्वारा कवर किया गया है।

0

मुझे पता चला है कि 32-बिट जेवीएम 32-बिट संस्करणों से धीमे हो गए हैं। हालांकि नवीनतम संस्करण जावा 6 अपडेट 14 के साथ मैंने देखा है कि 64-बिट संस्करण बनाम 32-बिट संस्करण के साथ मेरे कई परीक्षण मामूली तेजी से तेज हैं। किसी भी तरह से केवल 5% से 10% अंतर है।

चाहे आपका प्रोग्राम 32-बिट या 64-बिट संस्करण का उपयोग करता है, जो आपके द्वारा उपयोग किए जाने वाले JVM की पसंद के लिए नीचे है। जैसा कि उल्लेख किया गया है कि आपको यह जांचने की आवश्यकता है कि आपके पास उचित साझा पुस्तकालय हैं। (या आदर्श रूप से कोई नहीं)

यदि आपको 4 जीबी या अधिक की आवश्यकता है तो मुख्य अंतर अधिक मेमोरी एएसपी का उपयोग करने में सक्षम है।

0

इस प्रयास करें:

public class Benchmark { 
public static void main(String args[]) { 
long time = System.currentTimeMillis(); 
for (int a = 1; a < 900000000; a++) { 
    for (int b = 1; b < 20; b++) { 
    } 
} 
long time2 = System.currentTimeMillis() - time; 
System.out.println("\nTime counter stopped: " + time2); 

}

32 में और 64 बिट और अंतर पर हंसते।

+5

इस मामले में अंतर का विवरण उपयोगी साबित होगा। –

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