سؤال

لقد كنت أتساءل عن تحسينات الأداء التي تم الترويج لها في Java SE 6 - هل هي موجودة في المترجم أم في وقت التشغيل؟وبعبارة أخرى، هل سيشهد تطبيق Java 5 الذي تم تجميعه بواسطة JDK 6 تحسينًا يتم تشغيله ضمن JSE 5 (يشير إلى تحسين برنامج التحويل البرمجي)؟هل سيشهد تطبيق Java 5 الذي تم تجميعه بواسطة JDK 5 تحسينًا يتم تشغيله ضمن JSE 6 (يشير إلى تحسين وقت التشغيل المحسن)؟

لقد لاحظت أن التجميع ضمن JDK 6 يستغرق تقريبًا ضعف الوقت الذي كان يستغرقه تحت JDK 5 لنفس قاعدة التعليمات البرمجية بالضبط؛آمل أن يتم قضاء بعض هذا الوقت الإضافي على الأقل في تحسينات المترجم، مما يؤدي إلى إنتاج ملفات JAR وWAR أكثر أداءً.لا تخوض معلومات Sun's JDK في التفاصيل حول تحسينات الأداء التي قاموا بها - أفترض أنها قليلاً من العمود A، وقليلًا من العمود B، لكنني أتساءل ما هو التأثير الأكبر.هل يعرف أحد أي معايير تم إجراؤها على JDK 6 مقابل JDK 6؟جى دي كيه 5؟

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

المحلول

لم أسمع عن التحسينات في المترجم، ولكن تم نشر معلومات واسعة النطاق حول تحسينات أداء وقت التشغيل.

دليل الهجرة:

[http://java.sun.com/javase/6/webnotes/adoption/adoptionguide.html]

ورقة عمل الأداء:

[http://java.sun.com/performance/reference/whitepapers/6_performance.html]

نصائح أخرى

javac، الذي يجمع من مصدر Java إلى رموز بايت، لا يقوم بأي تحسين تقريبًا.في الواقع، يؤدي التحسين في كثير من الأحيان إلى جعل التعليمات البرمجية تعمل بشكل أبطأ من خلال صعوبة تحليلها لإجراء تحسينات لاحقة.

الفرق الوحيد المهم بين التعليمات البرمجية التي تم إنشاؤها للإصدارين 1.5 و1.6 هو أنه مع -target 1.6 تتم إضافة معلومات إضافية حول حالة المكدس لجعل التحقق أسهل وأسرع (يقوم Java ME بذلك أيضًا).يؤثر هذا فقط على سرعات تحميل الفصل.

الجزء الأمثل الحقيقي هو مترجم نقطة الاتصال الذي يقوم بتجميع الكود الثانوي إلى الكود الأصلي.يتم تحديث هذا حتى في بعض إصدارات التحديث.في نظام التشغيل Windows، يتم توزيع إصدار نقطة الاتصال C1 الأبطأ للعميل فقط في JRE بشكل افتراضي.تعمل نقطة اتصال الخادم C2 بشكل أسرع (استخدم -server في سطر أوامر Java)، ولكنها أبطأ في البدء وتستخدم المزيد من الذاكرة.

كما تقوم المكتبات والأدوات (بما في ذلك javac) أحيانًا بإجراء أعمال التحسين.

لا أعرف لماذا تجد JDK 6 أبطأ في ترجمة التعليمات البرمجية من JDK 5.هل هناك بعض الاختلاف الدقيق في الإعداد؟

إنه ما يقرب من 100٪ من وقت التشغيل.في حين أنه من الممكن لبعض حيل الترجمة الأساسية أن تصل إلى مترجم Java نفسه، إلا أنني لا أعتقد أن هناك أي تحسينات مهمة بين Java 1.5 و1.6.

كان هناك الكثير من التحسينات والتحسينات الجديدة في جهاز جافا الظاهري الجديد.لذا فإن الجزء الرئيسي الذي ستلاحظه من تحسين الأداء هو أثناء تشغيل Java بالإصدار 6 jvm.

من المحتمل أن يؤدي تجميع تعليمات برمجية Java القديمة باستخدام Java 6 JDK إلى تعليمات برمجية أكثر كفاءة، ولكن التحسينات الرئيسية تكمن في الجهاز الظاهري، على الأقل هذا ما لاحظته.

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