سؤال

أنا العبث مع لعبة مترجم في جافا وأنا كنت تفكر في محاولة كتابة بسيطة المترجم التي يمكن أن تولد بايت كود على آلة جافا الافتراضية.مما جعلني أفكر كم الأمثل يجب القيام به من قبل المجمعين التي تستهدف الأجهزة الظاهرية مثل JVM CLI ؟

هل فقط في الوقت (JIT) المجمعين هل المستمر للطي, ثقب الباب تحسينات وما إلى ذلك ؟

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

المحلول

أنا فقط ستعمل على إضافة الروابط التي تشرح جافا بايت كود جيد جدا وبعض مختلف الأمثل من JVM أثناء وقت التشغيل.

نصائح أخرى

تحسين بايت كود ربما تناقض في معظم الحالات

أنا لا أعتقد أن هذا صحيح.تحسينات مثل رفع حلقة الثوابت ونشر ثوابت لا يمكن أبدا أن يصب حتى لو JVM ذكي بما فيه الكفاية للقيام بها من تلقاء نفسها, بسيطة بحكم مما يجعل رمز اقل.

الأمثل هو ما يجعل JVMs قابلة للحياة كما البيئات مدة تشغيل التطبيقات ، يمكنك الرهان على أن الشمس و IBM و الأصدقاء يبذلون قصارى جهدهم للتأكد من أنها يمكن تحسين الخاص بك بايت كود و JIT-ترجمة التعليمات البرمجية بكفاءة طريقة ممكنة.

مع أن يقال, إذا كنت تعتقد أنك يمكن قبل تحسين بايت كود فإنه على الأرجح لن تفعل الكثير من الضرر.

فإنه يستحق أن يكون علم أن JVMs يمكن أن تميل نحو أداء أفضل (وليس التحطيم) عندما قدم مع نوع بايت كود جافا مترجم يميل إلى بناء.أنها ليست معروفة للتحسين ينبغي تفويتها أو حتى JVM إلى تحطم عند التقليب من بايت كود تحدث التي هي صحيحة ولكن على عكس ما كان تنتجها javac.نأمل أن هذا النوع من الشيء هو أكثر في الماضي الآن, ولكن قد يكون هناك شيء أن تكون على علم.

Obfuscators مثل ProGuard سيتم تنفيذ العديد من ساكنة أمثلية على بايت كود بالنسبة لك.

نقطة ساخنة المترجم تحسين التعليمات البرمجية الخاصة بك في وقت التشغيل بشكل أفضل مما هو ممكن في وقت التحويل البرمجي - لديه المزيد من المعلومات للعمل مع ، بعد كل شيء.المرة الوحيدة التي يجب أن تكون تحسين بايت كود بدلا من مجرد خوارزمية الخاص بك عندما كنت تستهدف الأجهزة المحمولة مثل بلاك بيري ، حيث JVM لذلك منصة ليست قوية بما فيه الكفاية لتحسين رمز في وقت التشغيل فقط ينفذ بايت كود.

تحسين بايت كود ربما تناقض في معظم الحالات.إلا إذا كنت السيطرة على VM, لا يوجد لديك فكرة عما يفعل لتسريع تنفيذ التعليمات البرمجية, إذا كان أي شيء.المترجم سوف تحتاج إلى معرفة تفاصيل VM من أجل توليد الأمثل رمز.

ملاحظة Aseraphim:

فإنه يمكن أيضا أن تكون مفيدة لتحسين بايت كود غير التطبيقات المضمنة في بعض الحالات المحدودة:

  1. عند تنفيذ التعليمات البرمجية عبر السلك ، على سبيل المثال WebStart تطبيقات للحد من الناتج/حجم ذاكرة التخزين المؤقت و لأنك لا تعرف بالضرورة القدرة/سرعة العميل.

  2. للحصول على التعليمات البرمجية التي تعرف هو الأداء الحاسمة التي تستخدم في البدء قبل (أقول) HotSpot كان لديها الوقت لجمع الإحصائيات.

مرة أخرى التحولات أن حسن محسن/obfuscator ينفذ يمكن أن تكون مفيدة جدا.

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