جافا: كيف يتعامل VM مع 64 بت `long" على معالج 32 بت

StackOverflow https://stackoverflow.com/questions/237309

  •  04-07-2019
  •  | 
  •  

سؤال

كيف يتعامل JVM مع "Long" البدائي ، وهو 64 بايت ، على معالج 32 بت؟


هل يمكن أن تستخدم النوى Mulitple بالتوازي عندما تكون على جهاز 32 بت متعدد النواة؟
ما مدى أبطأ عملية 64 بت على آلة 32 بت؟

هل كانت مفيدة؟

المحلول

قد يستخدم نوى متعددة لتشغيل مؤشرات ترابط مختلفة ، لكنها لا تستخدمها بالتوازي مع حسابات 64 بت. يتم تخزين طول 64 بت بشكل أساسي كـ اثنين من 32 بت. من أجل إضافتها ، هناك حاجة إلى إضافات ، تتبع جزء الحمل. الضرب يشبه ضرب رقمين من رقمين ، باستثناء كل رقم في القاعدة 2^32 بدلاً من القاعدة 10. حتى للعمليات الحسابية الأخرى.

تحرير حول السرعة: لا يمكنني إلا أن أخمن فرق السرعة. تتطلب الإضافة إضافة اثنين بدلاً من واحد ، وسيتطلب الضرب (على ما أظن) أربعة مضاعفات بدلاً من واحد. ومع ذلك ، أظن أنه إذا كان يمكن الاحتفاظ بكل شيء في السجلات ، فسيتم تقويم الوقت الفعلي للحساب بحلول الوقت المطلوب للذهاب إلى الذاكرة مرتين للقراءة ومرتين للكتابة ، لذا فإن تخميني يبلغ طوله حوالي ضعف بالنسبة إلى معظم عمليات. أتصور أنه سيعتمد على المعالج ، وتطبيق JVM الخاص ، ومرحلة القمر ، وما إلى ذلك ما لم تكن تقوم بأرقام ثقيلة ، لن تقلق بشأن ذلك. تقضي معظم البرامج معظم وقتها في انتظار IO من/من القرص أو الشبكة.

نصائح أخرى

من TalkTree, ، و ال جافا نقطة الساخنة الأسئلة الشائعة:

بشكل عام ، تأتي فوائد القدرة على معالجة كميات أكبر من الذاكرة مع فقدان الأداء الصغير في VMs 64 بت مقابل تشغيل نفس التطبيق على VM 32 بت. ويرجع ذلك إلى حقيقة أن كل مؤشر أصلي في النظام يستغرق 8 بايت بدلاً من 4. تحميل هذه البيانات الإضافية له تأثير على استخدام الذاكرة الذي يترجم إلى تنفيذ أبطأ قليلاً اعتمادًا على عدد المؤشرات التي يتم تحميلها أثناء تنفيذها برنامج Java الخاص بك.
والخبر السار هو أنه مع تشغيل منصات AMD64 و EM64T في وضع 64 بت ، يحصل Java VM على بعض السجلات الإضافية التي يمكن أن تستخدمها لإنشاء تسلسل تعليمات أصلي أكثر كفاءة. تزيد هذه السجلات الإضافية من الأداء إلى النقطة التي لا يوجد فيها أي خسارة في الأداء على الإطلاق عند مقارنة سرعة التنفيذ من 32 إلى 64 بت.

إن فرق الأداء الذي يقارن تطبيقًا يعمل على منصة 64 بت مقابل منصة 32 بت على SPARC هو في ترتيب تدهور 10-20 ٪ عند الانتقال إلى VM 64 بت 64 بت. على منصات AMD64 و EM64T ، يتراوح هذا الاختلاف من 0 إلى 15 ٪ اعتمادًا على مقدار المؤشر الذي يصل إلى تطبيقك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top