हुआवेई ने अपने नए आर्क कंपाइलर के कामकाज के बारे में मुख्य विवरण जारी किया है, जो एंड्रॉइड पर ऐप के प्रदर्शन को काफी बढ़ाने का वादा करता है। अधिक जानकारी के लिए आगे पढ़ें
हुआवेई के बारे में हाल की अधिकांश बातचीत कंपनी की दुर्भाग्यपूर्ण राजनीतिक स्थिति के इर्द-गिर्द घूमती रही है अमेरिकी कार्यकारी आदेश जिसने कई कंपनियों को हुआवेई के साथ व्यापार करने से प्रतिबंधित कर दिया. इस तरह के निर्णायक निर्णय के परिणाम इतने बड़े होते हैं कि उन पर ध्यान नहीं दिया जा सकता। लेकिन एक वैकल्पिक वास्तविकता में जहां यह कार्यकारी आदेश मौजूद नहीं है, हुआवेई इसके लिए सुर्खियों में रही होगी हाल ही में सामने आया आर्क कंपाइलर, नवीनतम नवाचार जो एंड्रॉइड और के बीच ऐप प्रदर्शन अंतर को पाटने का दावा करता है आईओएस.
आर्क कंपाइलर क्या है, इस पर विचार करने से पहले, हमें एक कदम पीछे जाकर यह समझना होगा कि कंपाइलर क्या है और यह एंड्रॉइड सिस्टम में किस उद्देश्य को पूरा करता है।
एंड्रॉइड पर कंपाइलर्स और दुभाषियों का संक्षिप्त इतिहास
कंपाइलर एक कंप्यूटर प्रोग्राम है जो कोड को एक भाषा से दूसरी भाषा में अनुवाद करता है, जो अक्सर मूल मशीन भाषा होती है। फिर इसे या तो सीधे कंप्यूटर द्वारा निष्पादित किया जा सकता है या किसी अन्य प्रोग्राम (दुभाषिया) के माध्यम से निष्पादित किया जा सकता है। यह अनुवाद आवश्यक है क्योंकि हम मानव-पठनीय प्रोग्रामिंग भाषाओं (जैसे जावा और) में कोड लिखते हैं कोटलिन), जबकि कंप्यूटर केवल मूल मशीन भाषा (1 और के रूप में बाइनरी कोड) को समझता है 0)। इस प्रकार कंपाइलर उन निर्देशों के बीच एक सेतु का काम करता है जो मनुष्य लिखता है और मशीन की उन निर्देशों को समझने और फिर निष्पादित करने की क्षमता के बीच एक पुल के रूप में कार्य करता है। इस प्रकार, यह रूपांतरण और उसके बाद की व्याख्या कितनी जल्दी और कुशलता से होती है, यह संकलक की दक्षता को परिभाषित करता है कंपाइलर की दक्षता और कोड के प्रदर्शन और दक्षता के बीच सीधा संबंध स्थापित करना, और विस्तार से, क्षुधा.
दल्विक वी.एम
एंड्रॉइड के शुरुआती दिनों में, ओएस ने जेआईटी (जस्ट-इन-टाइम) कंपाइलर के साथ-साथ डाल्विक वीएम (दुभाषिया) का उपयोग किया। यह पुराना वीडियो XDA TV के Android Basics 101 से है श्रृंखला डेल्विक वीएम और जेआईटी सेटअप को छूती है, ये दोनों शुरुआती एंड्रॉइड सिस्टम की जरूरतों को पूरा करते थे जहां मेमोरी की कमी प्रचुर मात्रा में थी। डेल्विक वीएम ने जावा बाइटकोड लिया और जब भी कोड को निष्पादित करने की आवश्यकता हुई (इसलिए जस्ट-इन-टाइम) इसे मशीन कोड में परिवर्तित कर दिया। यह आवश्यक था क्योंकि उस समय फोन में स्टोरेज स्पेस एक वास्तविक बाधा थी, इसलिए इस दृष्टिकोण ने ऐप्स को सिस्टम में छोटे फ़ाइल आकार के साथ काम करने की अनुमति दी।
रनटाइम पर ऐप्स को संकलित करने और व्याख्या करने में समग्र रूप से धीमे ऐप प्रदर्शन का दोष था क्योंकि संकलन तब होता था जब उपयोगकर्ता ऐप का उपयोग कर रहा होता था।
डाल्विक की कचरा संग्रहण तंत्र की भी सीमाएँ थीं। डाल्विक ने प्रत्येक मेमोरी आवंटन का सामूहिक रूप से ट्रैक रखा। एक बार जब डाल्विक यह निर्धारित कर लेता है कि मेमोरी का एक टुकड़ा अब प्रोग्राम द्वारा उपयोग नहीं किया जा रहा है, तो यह प्रोग्रामर के किसी भी हस्तक्षेप के बिना इस मेमोरी को वापस ढेर में मुक्त कर देता है। इस प्रक्रिया को गारबेज कलेक्शन (जीसी) कहा जाता है, और इसका उद्देश्य ऐसे प्रोग्राम में मेमोरी ऑब्जेक्ट ढूंढना है जो अब एक्सेस नहीं किया गया है और फिर मेमोरी को खाली करने के लिए उन ऑब्जेक्ट्स द्वारा उपयोग किए गए संसाधनों को पुनः प्राप्त करना है। सिस्टम निर्धारित करता है कि सामूहिक आधार पर जीसी की आवश्यकता कब होती है, इसलिए ऐप डेवलपर्स को यह चुनने का मौका नहीं मिलता है कि जीसी घटनाएं कब होती हैं [एआरटी में भी]। इसलिए यदि अग्रभूमि ऐप पर किसी गहन प्रसंस्करण गतिविधि के बीच में कोई जीसी घटना घटती है, तो सिस्टम रुक जाएगा प्रक्रिया का निष्पादन और जीसी शुरू करें, जिससे प्रसंस्करण समय में वृद्धि हो और ध्यान देने योग्य "जंक" का परिचय हो उपयोगकर्ता.
इन और अन्य बाधाओं ने Google को तेज़ प्रदर्शन के लिए वैकल्पिक दृष्टिकोण तलाशने के लिए प्रेरित किया।
एंड्रॉइड रनटाइम
एंड्रॉइड 4.4 किटकैट के साथ, Google ने पेश किया एआरटी (एंड्रॉइड रनटाइम) एओटी (अहेड-ऑफ-टाइम) कंपाइलर के साथ पूर्वावलोकन फॉर्म में, और एंड्रॉइड 5.0 लॉलीपॉप के साथ, Google ने उपलब्ध एकमात्र दुभाषिया के रूप में एआरटी के पक्ष में डाल्विक को हटा दिया। एओटी के साथ एआरटी ने ऐप के इंस्टालेशन के समय ही कोड को मशीनी भाषा में परिवर्तित कर दिया, न कि ऐप के उपयोग में होने पर ऐसे रूपांतरण करने की प्रतीक्षा की। इस प्रकार इस दृष्टिकोण ने ऐप लॉन्च के समय को तो बढ़ा दिया, लेकिन धीमे इंस्टॉलेशन समय और डिस्क स्थान के उपयोग में वृद्धि के रूप में कमियां भी पेश कीं। यह सब संतुलित करने के लिए, Google अपनाया यह सुनिश्चित करने के लिए कि कोई भी एक कारक अत्यधिक प्रभावित न हो, Android 7.0 Nougat पर ART के साथ AOT, JIT और प्रोफ़ाइल-निर्देशित संकलन का संयोजन।
एआरटी ने कचरा संग्रहण को कम बाधा डालने वाला बनाने पर भी काम किया। जीसी प्रक्रिया को कम विरामों (डाल्विक के दो विरामों की तुलना में एकल लघु विराम), कम विखंडन और कम मेमोरी उपयोग के साथ समग्र रूप से तेज़ होने के लिए अनुकूलित किया गया था। Google I/O 2014 में Google की प्रस्तुति में डाल्विक के GC और ART के सुधारों की सीमाओं को बेहतर ढंग से समझाया गया है।
वर्षों में इन परिवर्तनों के साथ भी, Google के दृष्टिकोण के मूल आधार में संकलन (अनुवाद) तत्व के समय को बदलते हुए निष्पादन के दौरान कोड की व्याख्या करना शामिल था। कचरा संग्रहण भी अपनी अंतर्निहित व्यवधानकारी और सामूहिक प्रकृति के कारण ऐप डेवलपर्स के लिए एक परेशानी का विषय बना हुआ है। यकीनन, एंड्रॉइड के ऐप का प्रदर्शन प्रभावित होता है क्योंकि इसमें ओवरहेड्स शामिल रहते हैं।
हुआवेई द्वारा आर्क कंपाइलर
हुआवेई एक अधिक कुशल समाधान विकसित करने की दिशा में काम कर रही है और इसके परिणामस्वरूप उसने इस क्षेत्र में सैकड़ों विशेषज्ञों को काम पर रखा है। इस प्रयास का परिणाम आर्क कंपाइलर है, जिसके बारे में हुआवेई का दावा है कि यह पहला स्टैटिक कंपाइलर है जो मशीनी भाषा में सीधे अनुवाद की अनुमति देता है, जिससे इसकी आवश्यकता पूरी तरह से समाप्त हो जाती है दुभाषिया। आर्क कंपाइलर को जावा और सी के लिए रनिंग दक्षता को अधिकतम करने के लक्ष्य के साथ भी विकसित किया गया था, इसलिए किसी को सैद्धांतिक रूप से इन भाषाओं के साथ सर्वोत्तम परिणाम देखना चाहिए।
हुआवेई आर्क कंपाइलर की कुछ प्रमुख विशेषताएं नीचे प्रस्तुत करती है:
- एओटी और जेआईटी जैसी संकलन तकनीकें कुछ प्रोग्रामों को मशीन कोड में परिवर्तित कर सकती हैं और उन्हें सीधे सीपीयू पर चला सकती हैं, लेकिन ये तकनीकें दुभाषिया और उससे जुड़ी सीमाओं से खुद को पूरी तरह से अलग करने में असमर्थ हैं। आर्क कंपाइलर स्थैतिक संकलन का उपयोग करता है, जो इसे गतिशील दुभाषिया से खुद को अलग करने देता है, जिससे ऐप के प्रदर्शन को बढ़ावा देने की संभावना खुल जाती है।छलांग और सीमा।"
- स्थैतिक संकलन में अत्यधिक कठोर होने और समायोजन करने में असमर्थ होने का एक संभावित नकारात्मक पहलू है जो एक गतिशील संकलक निष्पादन के दौरान कर सकता है। हुआवेई का दावा है कि आर्क कंपाइलर का स्थिर संकलन इसका समाधान करता है।प्रोग्रामिंग भाषा में गतिशील सुविधाओं को मशीन कोड में निर्बाध रूप से अनुवाद करके।"
- मौजूदा संकलन प्रक्रियाएँ मोबाइल डिवाइस पर ऐप पैकेज की स्थापना के दौरान या उसके बाद होती हैं। आर्क कंपाइलर को सॉफ़्टवेयर विकास के दौरान परिनियोजन के लिए डिज़ाइन किया गया है, जिसे हम इंस्टॉलेशन और निष्पादन के दौरान समय के ओवरहेड को हटाने में मदद करते हैं। हमारा मानना है कि ऐप डेवलपर ऐप के दौरान विभिन्न भाषाओं को सीधे मूल मशीन कोड में संकलित करने में सक्षम होंगे विकास प्रक्रिया, और परिणामी एपीके को किसी दुभाषिया या वर्चुअल मशीन के साथ बातचीत की आवश्यकता नहीं हो सकती है समारोह। उदाहरण के लिए, यह सैद्धांतिक रूप से जेएनआई से संबंधित ओवरहेड्स को कम करेगा।
- आर्क कंपाइलर कचरा संग्रहण की सामूहिक प्रकृति को भी बदलता है। यह विभिन्न जावा थ्रेड्स के लिए GC इवेंट को अलग-अलग घटित करने की अनुमति देता है। यह विभाजित दृष्टिकोण अग्रभूमि ऐप्स पर कम जंक प्रदान करने का दावा करता है।
इन परिवर्तनों के परिणामस्वरूप, आर्क कंपाइलर कर सकता है एंड्रॉइड सिस्टम संचालन प्रवाह में 24% तक, प्रतिक्रिया गति में 44% तक और तृतीय-पक्ष अनुप्रयोगों की सहजता में 60% तक सुधार प्रतीत होता है।, एंड्रॉइड ऐप के प्रदर्शन को iOS के समान स्तर पर लाने का दावा कर रहा है।
आर्क कंपाइलर वर्तमान में एआरएम चिप आर्किटेक्चर के लिए संकलित और अनुकूलित है। हुआवेई को उम्मीद है कि भविष्य में, सहयोगी हार्डवेयर और सॉफ्टवेयर डिजाइन किरिन चिप क्षमताओं को अधिकतम करने की दिशा में काम करेंगे।
आर्क कंपाइलर मानक जावा उपयोग का समर्थन करता है, जिससे ऐप डेवलपर को कोई कोड संशोधन करने की आवश्यकता के बिना तीसरे पक्ष के ऐप्स के सीधे संकलन की अनुमति मिलती है। आर्क कंपाइलर प्रदर्शन और मेमोरी में और सुधार के लिए "कोड संरचना में समायोजन" की भी अनुमति देता है। हुआवेई ने आर्क कंपाइलर को एक ओपन सोर्स सिस्टम बनाने का विकल्प चुना है, जो तीसरे पक्ष के डेवलपर्स को अपनाने की अनुमति देगा और उनकी आवश्यकताओं के लिए प्रौद्योगिकी को अनुकूलित करें, ऐप डेवलपर्स और मोबाइल फोन के साथ इसे अपनाने को आगे बढ़ाएं निर्माता।
हालाँकि हुआवेई ने आर्क कंपाइलर के किसी भी नुकसान का उल्लेख नहीं किया है, लेकिन कोई भी बड़े ऐप आकार की उम्मीद कर सकता है कम से कम, लेकिन इससे वर्तमान पीढ़ी के उपकरणों पर कोई समस्या नहीं आनी चाहिए जो पर्याप्त मात्रा में आते हैं भंडारण। हम यह भी उम्मीद करते हैं कि आर्क कंपाइलर सभी सीपीयू आर्किटेक्चर के लिए उपलब्ध नहीं होगा, क्योंकि Google की अनुकूलता समस्या हुआवेई का सिरदर्द नहीं है। आर्क कंपाइलर को विकास के दौरान उपयोग करने के लिए डिज़ाइन किया गया है, न कि इंस्टॉलेशन के दौरान; यह एक संकेत प्रस्तुत करता है कि Huawei ने संभवतः एंड्रॉइड डिवाइसों पर ऐप्स को तैनात और इंस्टॉल करने के तरीके को संशोधित किया होगा, और अपने स्वयं के एपीके डिज़ाइन पर भी काम किया होगा। यदि सही है, तो यह पारिस्थितिकी तंत्र में एक बड़ी संगतता समस्या पैदा कर सकता है, और इसे एक मानक एंड्रॉइड सुविधा बनने में काफी समय लगेगा, यदि कभी भी।
उपयोगकर्ता के डिवाइस पर संकलन न करना भी अनुकूलन पर एक बड़ा सवाल खड़ा करता है। एआरटी वर्तमान में प्रति-माइक्रो-आर्किटेक्चर के आधार पर अनुकूलन करता है, जिसका अर्थ है कि परिणामी बाइनरी होगा स्नैपड्रैगन डिवाइस बनाम Exynos डिवाइस के लिए अलग, या यहां तक कि स्नैपड्रैगन 845 बनाम स्नैपड्रैगन के लिए भी अलग 625. यह दृष्टिकोण उन निर्माताओं के लिए उपयुक्त है जिनके पास Apple और Huawei जैसे SoC का पूर्ण नियंत्रण है। हालाँकि, एंड्रॉइड दुनिया के बाकी हिस्सों में कई अलग-अलग SoCs का उपयोग करने के साथ, एक सामान्य अनुकूलन को सभी डिवाइसों में उपयोग करने के लिए मजबूर करना आर्क कंपाइलर के मानकीकरण के लिए फिर से एक बाधा होगी। नतीजतन, आर्क कंपाइलर के जल्द ही आपके पसंदीदा कस्टम ROM पर आने की उम्मीद न करें।
स्पष्टीकरण के लिए, आर्क कंपाइलर को एंड्रॉइड के साथ काम करने के लिए विकसित किया गया है, और हुआवेई ने इसके संबंध में कुछ भी उल्लेख नहीं किया है कथित होमब्रू ओएस और आर्क कंपाइलर के साथ इसकी अनुकूलता, इसलिए हम इस संबंध में कोई अनुमान नहीं लगाते हैं।
हुआवेई ने डेवलपर्स और बड़े पारिस्थितिकी तंत्र को समर्पित दो प्रमुख सम्मेलन आयोजित करने की योजना बनाई है। ये हैं हुआवेई डिवाइस चाइना डेवलपर्स कॉन्फ्रेंस और ग्रीन अलायंस चाइना डेवलपर्स कॉन्फ्रेंस। इस तकनीक के लाभों को यथासंभव व्यापक रूप से सुलभ बनाने के प्रयास में, दोनों कार्यक्रम हुआवेई के आर्क कंपाइलर से संबंधित विशिष्ट ओपन सोर्स मुद्दों को संबोधित करेंगे।
XDA के वरिष्ठ मान्यता प्राप्त योगदानकर्ता को विशेष धन्यवाद डीज़_ट्रॉय और मान्यता प्राप्त डेवलपर arter97 उनकी सहायता और इनपुट के लिए।
नोट: Huawei/Honor ने अपने उपकरणों के लिए आधिकारिक बूटलोडर अनलॉक कोड प्रदान करना बंद कर दिया है। इसलिए, उनके डिवाइस के बूटलोडर्स को अनलॉक नहीं किया जा सकता है, जिसका अर्थ है कि उपयोगकर्ता कस्टम रोम को रूट या इंस्टॉल नहीं कर सकते हैं।