मैंने एएसएम का उपयोग करके कुछ जावा बाइट कोड पीढ़ी की।
विज़िटर पैटर्न में किसी प्रकार के छोटे डीएसएल के एएसटी के किसी प्रकार के माध्यम से चलकर।
और मैं जेनरेट बाइट कोड के बारे में चिंता कर रहा हूं, यह भी 'सरल' है, यानी, 'संकलन-समय अनुकूलन' के बिना।
हालांकि मेरे मामले में, जेनरेट बाइट कोड अनुकूलित नहीं किया गया है, तो यह ठीक हो सकता है, फिर भी मैं पूछने में मदद नहीं कर सकता: क्या उन परियोजनाओं की आवश्यकता है जो बाइट कोड अनुकूलन करने के लिए रनटाइम पर बाइट कोड उत्पन्न करते हैं?
मुझे यह तथ्य पता है कि जेवीएम के लिए, कार्यक्रम के चलते अधिकांश 'ऑप्टिमाइज़ेशन' काम किया जाता है, जिट संकलन द्वारा। तो संकलन समय पर बाइटकोड अनुकूलन थोड़ा प्रभाव डाल सकता है।
लेकिन, वास्तव में? क्या यह फ्लाई पर उत्पन्न बाइटकोड के लिए बाइटकोड अनुकूलन करने के लिए बिल्कुल अर्थहीन है? अंतर के बारे में कुछ अनुभव साझा करने के लिए कोई भी है, मुख्य रूप से रनटाइम प्रदर्शन में, बाइटकोड के बीच और बिना किसी ऑप्टिमाइज़ेशन के?गतिशील रूप से जेनरेट किए गए जावा बाइट-कोड को किसी भी अनुकूलन की आवश्यकता है?
उत्तर
मुझे कम से कम एक जेवीएम आधारित भाषा पता है, जो साझा नामहीन रहता है, नरक के रूप में धीमा है। यह कुछ संकलन समय अनुकूलन का उपयोग कर सकता था।
जैवैक और जेवीएम लगभग उसी प्रोग्रामिंग मॉडल का विश्लेषण कर रहे हैं, इसलिए जैवैक द्वारा नियोजित कोई भी ऑप्टिमाइज़ेशन तकनीक जेवीएम द्वारा भी नियोजित की जा सकती है। तब जावैक के काम को डुप्लिकेट करने के लिए बहुत कुछ नहीं है। दरअसल यह शायद पसंद किया जाता है कि जावैक जितना संभव हो सके स्रोत कोड की संरचना को छोड़ देता है ताकि JVM कोड के बारे में बेहतर कारण हो सके।
यदि स्रोत भाषा जावा-आईश भाषा नहीं है तो यह लागू नहीं होता है।
इसके बारे में सोचें, सीपीयू बहुत बढ़िया अनुकूलन भी करता है, तो JVM को कोई अनुकूलन करने की आवश्यकता क्यों है? इसे सब सीपीयू में क्यों न छोड़ें। क्योंकि सीपीयू और जेवीएम बहुत अलग कोड का विश्लेषण कर रहे हैं। सीपीयू मशीन निर्देशों के मनमाने ढंग से अनुक्रम का विश्लेषण कर रहा है (हालांकि यह उच्च स्तरीय भाषाओं के सामान्य व्यवहार के आधार पर धारणाएं बना सकता है)। जेवीएम एक बहुत ही विशिष्ट, उच्च स्तर की भाषा का विश्लेषण कर रहा है, जेवीएम कोड के आधार पर कोड को तर्क और रूपांतरित कर सकता है जो मशीन निर्देशों से सीपीयू के लिए लगभग असंभव है।
अपने मामले पर वापस जाएं, यह संभव है कि, आप (कंपाइलर के रूप में) अपनी उच्च-स्तरीय स्रोत भाषा के बारे में बहुत बेहतर जानते हैं, आप रूपांतरणों को JVM द्वारा असंभव कर सकते हैं।
महान स्पष्टीकरण! मुझे लगता है कि मैं तुम्हारी बात समझ गया, यह मुझे परेशान करता है। इसलिए, यदि मेरा डीएसएल एक उच्च प्रोग्रामिंग मॉडल पेश करता है - उदाहरण के लिए 'नियम इंजन' के कुछ रूप में बुलियन तर्क, मैं 'गेट लॉजिक ऑप्टिमाइज़ेशन' जैसे बूलियन तर्क सिद्धांत में कुछ अनुकूलन कर सकता हूं। लेकिन अगर मेरा डीएसएल सिर्फ एक और encapsulated अनिवार्य प्रोग्रामिंग भाषा है, जैसे जावा की तरह, कोई अनुकूलन करने की कोई ज़रूरत नहीं है, है ना? –
नहीं, यह आवश्यक नहीं है।
यदि आप जावाक के आउटपुट को देखते हैं, तो यह वास्तव में कोई संकलन समय अनुकूलन नहीं करता है। और हॉटस्पॉट के जेआईटी के लिए धन्यवाद, यह कहना मुश्किल है कि बाइटकोड को बदलने का असर वैसे भी अनुकूलन पर होगा। ऐसी चीजों के बारे में चिंता न करना सबसे अच्छा है जबतक कि आप साबित नहीं कर सकते कि वास्तविक बाधा है और इसकी जांच करने का समय है।
- 1. गतिशील रूप से जेनरेट किए गए HTML
- 2. गतिशील रूप से जेनरेट किए गए मॉडल
- 3. गतिशील रूप से जेनरेट किए गए एसवीजी
- 4. गतिशील रूप से जेनरेट किए गए तत्वों पर दस्तक बाध्यकारी
- 5. जेनरेट किए गए जावा स्रोत
- 6. गतिशील रूप से जेनरेट की गई कक्षा
- 7. गतिशील रूप से फाइलों की आवश्यकता है?
- 8. Velocity- जेनरेट किए गए एचटीएमएल
- 9. गतिशील रूप से लोड किए गए लिंक
- 10. गतिशील रूप से लोड किए गए DIV
- 11. गतिशील रूप से जेनरेट किए गए एचटीएमएल को नोकोगिरी/ओपन यूआरआई
- 12. क्या मैं गतिशील रूप से जेनरेट किए गए एक्सएमएल से जेएसपी बना सकता हूं?
- 13. जावा अनुकूलन: बाइटकोड-केवल बनाम जेआईटी
- 14. गतिशील रूप से जेनरेट किए गए टेक्स्ट व्यू पर ऑनक्लिकलिस्टर को कैसे जोड़ा जाए?
- 15. जावा बाइटकोड
- 16. किसी विशेष सुरक्षा अनुकूलन की व्याख्या की आवश्यकता है
- 17. गतिशील रूप से जेनरेट किए गए टेक्स्टबॉक्स के लिए jquery ऑटो पूर्ण
- 18. जेनरेट किए गए सी # कोड
- 19. गतिशील रूप से जेनरेट किए गए मोडल पॉपअप में पंजीकरण नहीं कर रहे jQuery 'ऑन'
- 20. पाइथन 3.5 प्रकार संकेत गतिशील रूप से जेनरेट किए गए उदाहरण गुण
- 21. ग्रेले-जेनरेट किए गए एंड्रॉइडमैनेफेस्ट
- 22. डीओएम से स्वचालित रूप से जेनरेट किए गए जावास्क्रिप्ट चर को हटाना क्यों संभव नहीं है?
- 23. गतिशील रूप से जेनरेट की गई छवियां, POST
- 24. यादृच्छिक रूप से जेनरेट किए गए नंबर और यादृच्छिक रूप से जेनरेट किए गए नंबर को सुरक्षित करने के बीच क्या अंतर है?
- 25. एएसपी.नेट एमवीसी - मॉडल गतिशील रूप से जेनरेट किए गए चेकबॉक्स का एक सेट बाध्यकारी -
- 26. गतिशील रूप से जेनरेट किया गया GUI
- 27. गतिशील या जेनरेट किए गए HTML पृष्ठ को कैसे सक्षम किया जा सकता है?
- 28. गतिशील रूप से जेनरेट किए गए तत्वों पर नॉकआउट डेटा-बाइंड
- 29. क्या हमें स्क्रिप्ट को गतिशील रूप से बनाते समय भी "script.type = 'text/javascript" की आवश्यकता है?
- 30. एएसपी.नेट एमवीसी गतिशील रूप से जेनरेट की गई छवि यूआरएल
आप एक उदाहरण को हार्डकोड करने और इसे अपने बाइटकोड जनरेटर के खिलाफ रेसिंग करने का प्रयास कर सकते हैं ... –
यदि आपका कोड का टुकड़ा अक्सर नहीं चलाया जाता है, तो इसे जेआईटी द्वारा अनुकूलित नहीं किया जाएगा, लेकिन इससे कोई फर्क नहीं पड़ता क्योंकि यह नहीं है अक्सर चलाओ। और यदि यह अक्सर चलाता है, तो इसे अनुकूलित किया जाएगा। सब खुश हैं। – assylias
कृपया इसे http://stackoverflow.com/a/1680212/655756 देखें। दूसरे शब्दों में, आप और अनुकूलन कर सकते हैं, लेकिन यह आवश्यक नहीं है क्योंकि आम तौर पर उन अनुकूलन "कॉस्मेटिक" की तरह दिखते हैं। – n1ckolas