क्या जावा को देशी कोड से संकलित करने से इन दिनों कोई प्रदर्शन प्राप्त किया जा सकता है, या आधुनिक हॉटस्पॉट कंपाइलर्स वैसे भी ऐसा करने के अंत में खत्म हो जाते हैं?जावा कोड को मूल कोड में संकलित करने में प्रदर्शन लाभ?
उत्तर
प्रश्न What are advantages of bytecode over native code? प्रश्न के लिए हाल ही में एक समान चर्चा हुई थी। आप उस धागे में दिलचस्प जवाब पा सकते हैं।
मेमोरी प्रदर्शन या सीपीयू प्रदर्शन? या वे इन दिनों एक ही हैं?
मेरा एकमात्र सबूत अचूक है और एक अलग मंच पर: सी # (.NET 2.0) में सीपीयू-भूखे ऐप्स का एक गुच्छा पोर्ट करने के बाद, मुझे प्रदर्शन में पर्याप्त नुकसान नहीं हुआ (मुझे 10% पर्याप्त नहीं माना जाता है)। अच्छी तरह लिखित कोड विभिन्न वास्तुकलाओं पर अच्छा प्रदर्शन करता प्रतीत होता है।
अधिकांश एप्लिकेशन खर्च के साथ/अपशिष्ट समय:
- आईओ संचालन है कि स्थिर (संकलन समय) विश्लेषण से लाभ नहीं होगा।
- खराब एल्गोरिदम जो स्थिर विश्लेषण से लाभ नहीं उठाएंगे।
- महत्वपूर्ण CPU आंतरिक लूप में खराब मेमोरी लेआउट। हालांकि यह तकनीकी रूप से संभव है कि कंपाइलर्स हमें यहां मदद करते हैं, मुझे अभी तक एक वास्तविक कंपाइलर कुछ भी दिलचस्प नहीं दिख रहा है।
तो मेरे अनुभव के आधार पर, जब तक कि आप एक वीडियो कोडेक नहीं लिख रहे हैं, तो जावा ऐप्स बनाम संकलित करने का कोई फायदा नहीं है, बस हॉटस्पॉट कंपाइलर्स पर निर्भर है।
कुछ और अजीब सबूत। मैंने कुछ प्रदर्शन महत्वपूर्ण वास्तविक समय व्यापार वित्तीय अनुप्रयोगों पर काम किया है। मैं फ्रैंक से सहमत हूं, लगभग हर बार आपकी समस्या संकलित होने की कमी नहीं है, यह आपकी एल्गोरिदम या डेटा संरचना है। आधुनिक हॉट-स्पॉट कंपाइलर सही कोड के साथ बहुत अच्छे हैं, उदाहरण के लिए CERN Colt library संख्यात्मक काम के लिए संकलित, अनुकूलित फोरट्रान के 90% के भीतर है।
यदि आप गति के बारे में चिंतित हैं तो मैं वास्तव में एक अच्छा प्रोफाइलर की सिफारिश करता हूं और आपकी बाधाओं के बारे में साक्ष्य प्राप्त करता हूं - मैं YourKit का उपयोग करता हूं और बहुत खुश हूं।
हमने पिछले कुछ वर्षों में एक उदाहरण में गति के लिए मूल संकलित कोड का उपयोग किया है, और ऐसा इसलिए था कि हम CUDA का उपयोग कर सकते हैं और कुछ गंभीर GPU प्रदर्शन प्राप्त कर सकते हैं।
आपका प्रश्न एक छोटे से बड़ा है, इस सवाल का जवाब एक बहुत भिन्न हो
- आप बस समय संकलन (JIT) में या उपयोग कर रहे हैं नहीं
- जब आप उपयोग कर रहे हैं ,, अपनी प्रक्रिया के लिए मार डाला है, तो एक लंबा समय या
सभी हालिया जेवीएम जेआईटी का उपयोग करते हैं, लेकिन पुराने जेवीएम पर जावा कोड कई बार धीमी है कि मूल कोड।
यदि आपके पास एक ऐसा सर्वर है जो लंबे समय तक या बैच के लिए चलाता है जो एक ही कोड को बार-बार निष्पादित करता है, तो अंतर और बहुत कम होना चाहिए।
हमने सी ++ और जावा में दोनों को एक ही बैच लिखा और इसे विभिन्न डेटासेट के साथ चलाया, परिणाम लगभग 3 सेकंड के लिए भिन्न होता है, डेटासेट 5 मिनट से लेकर कई घंटों तक ले जाता है।
लेकिन सावधान रहें, वे विशेष मामले हैं कि एक महत्वपूर्ण अंतर होगा, उदाहरण के लिए बैच जिसे बहुत मेमोरी चाहिए।
ओवरहेड की जांच करने के लिए केवल छह अलग-अलग कार्यान्वयन के साथ हैलो-वर्ल्ड का प्रयास किया और अंतर चौंकाने वाला था। जावा चार्ट से बाहर था जबकि संकलित भाषाओं ने समान रूप से अच्छा प्रदर्शन किया था। यदि आवश्यक हो तो मैं सभी साक्ष्य (पुनरुत्पादित में) साबित कर सकता था।
- 1. संकलित संकलक द्वारा संकलित कोड का प्रदर्शन
- 2. जावास्क्रिप्ट में जावा स्रोत कोड को कैसे क्रॉस-संकलित करें?
- 3. जावा मूल विधि स्रोत कोड
- 4. ग्रहण जावा कोड प्रदर्शन linenumber
- 5. जावा कोड को कोड कोड में कनवर्ट करें
- 6. कैसे सी # में असुरक्षित कोड को संकलित करने के
- 7. jQuery - प्रदर्शन में सुधार/कोड
- 8. जावा कोड को संकलित करने की आवश्यकता क्यों है लेकिन जावास्क्रिप्ट कोड
- 9. एंड्रॉइड: MediaRecorder @ मूल कोड
- 10. जावा मूल लॉन्चर प्रदर्शन
- 11. स्रोत कोड मूल संस्करण
- 12. .NET पर्यावरण में वीबी 6 कोड संकलित
- 13. pthreads में openmp संकलित करें सी कोड
- 14. 32 केबी संकलित कोड
- 15. जावा कोड को डीएलएल में संकलित करने का कोई तरीका है?
- 16. .NET 4 में .NET कोड संकलित करना?
- 17. क्या मूल कोड में सेगफाल्ट ऑर्गेनेटिंग को संभालना संभव है?
- 18. प्रदर्शन लाभ/सी ++
- 19. क्या सी # कोड देशी बाइनरी में संकलित है?
- 20. एंड्रॉइड मूल कोड
- 21. इंटरमीडिएट कोड में संकलन क्यों करें?
- 22. प्रबंधित कोड से अप्रबंधित कोड का आविष्कार करने का प्रदर्शन
- 23. जावा में कोड में HTTP स्थिति कोड को परिवर्तित करने के लिए कैसे करें?
- 24. जावास्क्रिप्ट मूल कोड पढ़ें
- 25. मूल (सी ++) कोड
- 26. उदाहरण के लिए मूल कोड
- 27. मूल कोड क्या है?
- 28. बाइट कोड उपकरण - मूल या जावा एजेंट को लागू करें?
- 29. जावा: इस कोड में क्लोजर को समझाएं
- 30. मैं जेवीएम असेंबली कोड को बाइटकोड में कैसे संकलित करूं?
हैलो वर्ल्ड वास्तविक जीवन वर्कलोड का प्रतिनिधित्व नहीं करता है, और मुझे संदेह है कि यह JVM द्वारा अनुकूलित है। इस तरह के बहुत छोटे मामलों के लिए, संकलित भाषाओं की तुलना में जावा खोने की संभावना है। – nhahtdh