Huawei-მ გამოაქვეყნა ძირითადი დეტალები თავისი ახალი Ark Compiler-ის მუშაობის შესახებ, დაპირდა, რომ მკვეთრად გააუმჯობესებს აპლიკაციების შესრულებას Android-ზე. წაიკითხეთ მეტი
Huawei-ის ირგვლივ ბოლოდროინდელი საუბრის დიდი ნაწილი დატრიალდა კომპანიის სამწუხარო პოლიტიკური მდგომარეობის გარშემო ა აშშ-ის აღმასრულებელი ბრძანება, რომელიც ბევრ კომპანიას ზღუდავდა Huawei-თან ბიზნესის წარმოებაში. ასეთი გადამწყვეტი გადაწყვეტილების შედეგები ძალიან დიდია იმისთვის, რომ ყურადღება არ მიაქციოს. მაგრამ ალტერნატიულ რეალობაში, სადაც ეს აღმასრულებელი ბრძანება არ არსებობს, Huawei იქნებოდა მისი ყურადღების ცენტრში ახლახან გამოავლინა Ark Compiler, უახლესი ინოვაცია, რომელიც ამტკიცებს, რომ ხიდის აპლიკაციის შესრულების უფსკრული Android-სა და iOS.
სანამ ჩავუღრმავდებით იმას, თუ რა არის Ark Compiler, ჩვენ უნდა გადავდგათ ნაბიჯი უკან და გავიგოთ, რა არის შემდგენელი და რა მიზანს ემსახურება ის Android სისტემაში.
შემდგენლებისა და თარჯიმნების მოკლე ისტორია Android-ზე
შემდგენელი არის კომპიუტერული პროგრამა, რომელიც თარგმნის კოდს ერთი ენიდან მეორე ენაზე, ხშირად ეს არის მანქანური ენა. ამის შემდეგ ეს შეიძლება შესრულდეს პირდაპირ კომპიუტერის მიერ ან შესრულდეს სხვა პროგრამის (თარჯიმანი) მეშვეობით. ეს თარგმანი აუცილებელია, რადგან ჩვენ ვწერთ კოდს ადამიანის მიერ წასაკითხად პროგრამირების ენებზე (როგორიცაა Java და კოტლინი), მაშინ როცა კომპიუტერს ესმის მხოლოდ მშობლიური მანქანური ენა (ორობითი კოდი 1-ის და 0-ები). ამგვარად, შემდგენელი ემსახურება როგორც ხიდს ინსტრუქციებს შორის, რომლებსაც ადამიანი წერს და აპარატის უნარს, გაიგოს და შემდეგ შეასრულოს ეს ინსტრუქციები. რამდენად სწრაფად და ეფექტურად ხდება ეს კონვერტაცია და შემდგომი ინტერპრეტაცია, განსაზღვრავს შემდგენელის ეფექტურობას. პირდაპირი კორელაციის დანერგვა შემდგენელის ეფექტურობას კოდის შესრულებასა და ეფექტურობას შორის და გაფართოებით, აპლიკაციები.
Dalvik VM
Android-ის ადრეულ დღეებში, ოპერაციული სისტემა იყენებდა იმას, რასაც ეძახდნენ Dalvik VM (თარჯიმანი) JIT (უბრალოდ დროულად) კომპილატორთან ერთად. ეს უფრო ძველი ვიდეო XDA TV-ის Android Basics 101-დან სერია ეხება Dalvik VM-ს და JIT-ის კონფიგურაციას, რომლებიც ემსახურებოდა ადრეული Android სისტემების საჭიროებებს, სადაც მეხსიერების შეზღუდვები უხვად იყო. Dalvik VM-მა აიღო ჯავის ბაიტიკოდი და გადააქცია ის მანქანის კოდად, როგორც კი საჭირო იყო კოდის შესრულება (შესაბამისად, Just-In-Time). ეს აუცილებელი იყო, რადგან ტელეფონებში შესანახი სივრცე მაშინ ნამდვილ შეზღუდვას წარმოადგენდა, ამიტომ ამ მიდგომამ აპებს საშუალება მისცა სისტემაში უფრო მცირე ზომის ფაილებით მუშაობდნენ.
აპლიკაციების შედგენასა და ინტერპრეტაციას გაშვების დროს გააჩნდა აპლიკაციის მთლიანი ნელი მუშაობის ნაკლი, რადგან შედგენა მოხდება იმ დროს, როდესაც მომხმარებელი იყენებს აპს.
დალვიკს ასევე ჰქონდა შეზღუდვები ნაგვის შეგროვების მექანიზმთან დაკავშირებით. Dalvik თვალყურს ადევნებდა მეხსიერების თითოეულ განაწილებას ერთობლივად. მას შემდეგ, რაც დალვიკი დაადგენს, რომ მეხსიერების ნაწილს პროგრამა აღარ იყენებს, ის ათავისუფლებს ამ მეხსიერებას გროვაში პროგრამისტის ყოველგვარი ჩარევის გარეშე. ამ პროცესს ეწოდება Garbage Collection (GC) და ის მიზნად ისახავს მოძებნოს მეხსიერების ობიექტები პროგრამაში, რომლებზეც წვდომა აღარ არის და შემდეგ დაიბრუნოს ამ ობიექტების მიერ გამოყენებული რესურსები მეხსიერების გასათავისუფლებლად. სისტემა განსაზღვრავს, როდის არის საჭირო GC კოლექტიურ საფუძველზე, ამიტომ აპლიკაციის შემქმნელებს არ შეუძლიათ აირჩიონ, როდის მოხდება GC მოვლენები [თუნდაც ART-ში]. ასე რომ, თუ GC მოვლენა მოხდა რაიმე ინტენსიური დამუშავების აქტივობის შუაგულში წინა პლანზე, სისტემა შეაჩერებს პროცესის შესრულება და GC-ის დაწყება, რითაც იზრდება დამუშავების დრო და შესამჩნევი "ჯანკი" შემოდის მომხმარებლები.
ამ და სხვა შეზღუდვებმა აიძულა Google-ს შეესწავლა ალტერნატიული მიდგომები უფრო სწრაფი მუშაობისთვის.
Android Runtime
Android 4.4 KitKat-ით, Google-მა გააცნო ART (Android Runtime) წინასწარი გადახედვის სახით AOT (Ahead-Of-Time) შემდგენელით და Android 5.0 Lollipop-ით, Google-მა დატოვა Dalvik ART-ის სასარგებლოდ, როგორც ერთადერთი ხელმისაწვდომი თარჯიმანი. ART-მა AOT-მა გადააქცია კოდი მანქანურ ენად აპის ინსტალაციის დროს, ვიდრე ელოდება ასეთი კონვერტაციის გაკეთებას, როდესაც აპლიკაცია გამოიყენება. ამრიგად, ამ მიდგომამ დააჩქარა აპლიკაციის გაშვების დრო, მაგრამ ასევე შემოიღო ნაკლოვანებები ნელი ინსტალაციის დროისა და დისკის სივრცის გაზრდის სახით. ამ ყველაფრის დასაბალანსებლად, Google მიღებული AOT-ის, JIT-ის და პროფილით მართული კომპილაციის კომბინაცია ART-თან ერთად Android 7.0 Nougat-ზე, იმის უზრუნველსაყოფად, რომ არც ერთი ფაქტორი მკვეთრად არ იმოქმედებს.
ART ასევე მუშაობდა იმაზე, რომ ნაგვის კოლექცია ნაკლებად შემაწუხებელი ყოფილიყო. GC პროცესი ოპტიმიზირებული იყო იმისთვის, რომ მთლიანობაში უფრო სწრაფი ყოფილიყო ნაკლები პაუზებით (ერთჯერადი მოკლე პაუზა დალვიკის ორი პაუზის წინააღმდეგ), ნაკლები ფრაგმენტაცია და ნაკლები მეხსიერების გამოყენება. Google-ის პრეზენტაცია Google I/O 2014-ზე უფრო დეტალურად განიხილება Dalvik's GC-ისა და ART-ის გაუმჯობესების შეზღუდვები ამ მიმართულებით.
წლების განმავლობაში ამ ცვლილებების პირობებშიც კი, Google-ის მიდგომის ძირითადი წინაპირობა მოიცავდა კოდის ინტერპრეტაციას შესრულების დროს, ხოლო კომპილაციის (თარგმანის) ელემენტის დროის ცვალებადობას. ნაგვის შეგროვება ასევე აგრძელებს ტკივილს აპლიკაციების შემქმნელებისთვის მისი თანდაყოლილი შეფერხების და კოლექტიური ხასიათის გამო. სავარაუდოდ, Android-ის აპლიკაციის შესრულება ზარალდება შედეგად, რადგან კვლავ რჩება ზედნადები.
Ark Compiler მიერ Huawei
Huawei მუშაობდა უფრო ეფექტური გადაწყვეტის შემუშავებაზე და, შესაბამისად, დაიქირავა ამ სფეროში ასობით ექსპერტი. ამ ძალისხმევის შედეგია Ark Compiler, რომელიც Huawei აცხადებს, რომ არის პირველი სტატიკური შემდგენელი რაც საშუალებას იძლევა პირდაპირ თარგმნოს მანქანურ ენაზე, რაც მთლიანად აშორებს აუცილებლობას თარჯიმანი. Ark Compiler ასევე შეიქმნა Java და C-სთვის მუშაობის ეფექტურობის მაქსიმალური გაზრდის მიზნით, ამიტომ თეორიულად უნდა ნახოთ საუკეთესო შედეგები ამ ენებზე.
Huawei წარმოგიდგენთ Ark Compiler-ის რამდენიმე ძირითად მახასიათებელს, როგორც ქვემოთ:
- კომპილაციის ტექნიკას, როგორიცაა AOT და JIT, შეუძლია გადაიყვანოს ზოგიერთი პროგრამა მანქანურ კოდში და გაუშვას ისინი პირდაპირ CPU-ზე. მაგრამ ამ ტექნიკებს არ ძალუძს თარჯიმნისგან და მასთან დაკავშირებული შეზღუდვებისგან სრულად განშორება. Ark Compiler იყენებს სტატიკურ კომპილაციას, რომელიც საშუალებას აძლევს მას განშორდეს დინამიური თარჯიმანი, რაც ხსნის აპლიკაციის მუშაობის გაზრდის შესაძლებლობას "ნახტომები და საზღვრები."
- სტატიკურ კომპილაციას აქვს პოტენციური უარყოფითი მხარე, რომ იყოს ძალიან ხისტი და არ შეუძლია კორექტირების გაკეთება, რაც დინამიურ კომპილატორს შეუძლია შესრულების დროს. Huawei ამტკიცებს, რომ Ark Compiler-ის სტატიკური კომპილაცია წყვეტს ამას.პროგრამირების ენაში არსებული დინამიური მახასიათებლების შეუფერხებლად თარგმნით მანქანურ კოდში."
- არსებული კომპილაციის პროცესები მიმდინარეობს აპლიკაციის პაკეტის მობილურ მოწყობილობაზე ინსტალაციის დროს ან მის შემდეგ. Ark Compiler შექმნილია პროგრამული უზრუნველყოფის შემუშავების დროს განსათავსებლად, რაც, ჩვენი ვარაუდით, გვეხმარება ინსტალაციისა და შესრულების დროს დროის ხარჯების ამოღებაში. ჩვენ ვვარაუდობთ, რომ აპლიკაციის დეველოპერებს შეეძლებათ პირდაპირ შეადგინონ სხვადასხვა ენები მშობლიურ მანქანაში აპლიკაციის დროს განვითარების პროცესი და შედეგად APK შეიძლება არ დასჭირდეს ინტერაქციას თარჯიმანთან ან ვირტუალურ მანქანასთან ფუნქცია. ეს თეორიულად შეამცირებს JNI-სთან დაკავშირებულ ზედნადებს, მაგალითად.
- Ark Compiler ასევე ცვლის Garbage Collection-ის კოლექტიურ ბუნებას. ის საშუალებას აძლევს GC-ის მოვლენებს განცალკევდეს Java-ს სხვადასხვა ძაფისთვის. ეს დანაწევრებული მიდგომა ირწმუნება, რომ წინა პლანზე აპებზე ნაკლებ ჯაკს გვთავაზობს.
ამ ცვლილებების შედეგად Ark Compiler-ს შეუძლია ერთი შეხედვით გააუმჯობესებს Android სისტემის მუშაობის გამართულობას 24%-მდე, რეაგირების სიჩქარე 44%-მდე და მესამე მხარის აპლიკაციების სიგლუვეს 60%-მდე., აცხადებენ, რომ Android-ის აპლიკაციის შესრულება იმავე დონეზეა, რაც iOS-ზე.
Ark Compiler ამჟამად შედგენილია და ოპტიმიზებულია ARM ჩიპების არქიტექტურისთვის. Huawei იმედოვნებს, რომ მომავალში, ერთობლივი ტექნიკისა და პროგრამული უზრუნველყოფის დიზაინი იმუშავებს Kirin-ის ჩიპების შესაძლებლობების მაქსიმალურად გაზრდისკენ.
Ark Compiler მხარს უჭერს Java-ს სტანდარტულ გამოყენებას, რაც საშუალებას აძლევს მესამე მხარის აპლიკაციების პირდაპირ შედგენას, აპლიკაციის შემქმნელისთვის კოდის რაიმე ცვლილების საჭიროების გარეშე. Ark Compiler ასევე იძლევა „კოდის სტრუქტურის კორექტირებას“ შესრულებისა და მეხსიერების შემდგომი გაუმჯობესებისთვის. Huawei-მ აირჩია Ark Compiler-ის შექმნა ღია კოდის სისტემად, რომელიც მესამე მხარის დეველოპერებს საშუალებას მისცემს მიიღონ და მოახდინონ ტექნოლოგიის ადაპტირება მათი საჭიროებებისთვის, რაც კიდევ უფრო გააძლიერებს მის მიღებას აპლიკაციების შემქმნელებთან და მობილურ ტელეფონებთან მწარმოებლები.
მიუხედავად იმისა, რომ Huawei არ ახსენებს რაიმე მინუსს Ark Compiler-ისთვის, შეიძლება ველოდოთ აპლიკაციების დიდ ზომებს მინიმუმ, მაგრამ ეს არ უნდა შეუქმნას რაიმე პრობლემას მიმდინარე თაობის მოწყობილობებზე, რომლებიც მოყვება საკმაო შენახვა. ჩვენ ასევე ველით, რომ Ark Compiler არ იქნება ხელმისაწვდომი ყველა CPU არქიტექტურისთვის, რადგან Google-ის თავსებადობის პრობლემები არ არის Huawei-ს თავის ტკივილი. Ark Compiler შექმნილია გამოსაყენებლად განვითარების დროს და არა ინსტალაციის დროს; ეს მიუთითებს იმაზე, რომ Huawei-მ შესაძლოა შეცვალა აპების განლაგება და ინსტალაცია Android მოწყობილობებზე და ასევე შეიძლება ემუშავა საკუთარ APK დიზაინზე. თუ ეს სწორია, ეს შეიძლება შეუქმნას თავსებადობის მთავარ პრობლემას ეკოსისტემაში და დიდი დრო დასჭირდება, სანამ ეს გახდება Android-ის სტანდარტული ფუნქცია, თუ ოდესმე.
მომხმარებლის მოწყობილობაზე არ შედგენა ასევე აჩენს დიდ კითხვას ოპტიმიზაციის შესახებ. ამჟამად ART ოპტიმიზირებულია თითო მიკრო არქიტექტურის საფუძველზე, რაც იმას ნიშნავს, რომ შედეგად მიღებული ორობითი იქნება განსხვავებულია Snapdragon მოწყობილობისთვის Exynos მოწყობილობისგან, ან თუნდაც Snapdragon 845-ისთვის Snapdragon-ის წინააღმდეგ 625. ეს მიდგომა ლოგიკურია მწარმოებლებისთვის, რომლებსაც აქვთ სრული კონტროლი SoC-ზე, როგორიცაა Apple და Huawei. თუმცა, როდესაც დანარჩენი Android სამყარო იყენებს ბევრ სხვადასხვა SoC-ს, ზოგადი ოპტიმიზაციის იძულება გამოიყენოს ყველა მოწყობილობაზე, კვლავ იქნება Ark Compiler-ის სტანდარტიზაციის გზამკვლევი. შესაბამისად, ნუ ელით, რომ Ark Compiler მალე მოვა თქვენს საყვარელ საბაჟო ROM-ზე.
დაზუსტებისთვის, Ark Compiler შექმნილია Android-თან მუშაობისთვის და Huawei-ს არაფერი უხსენებია მასთან დაკავშირებით სავარაუდო homebrew OS და მისი თავსებადობა Ark Compiler-თან, ამიტომ ჩვენ არ ვაკეთებთ ვარაუდებს ამ მიზნით.
Huawei გეგმავს ორი ძირითადი კონფერენციის გამართვას, რომელიც ეძღვნება დეველოპერებს და უფრო დიდ ეკოსისტემას. ეს არის Huawei Device China Developers Conference და Green Alliance China Developers Conference. ორივე ღონისძიება განიხილავს ღია კოდის სპეციფიკურ საკითხებს, რომლებიც დაკავშირებულია Huawei-ს Ark Compiler-თან, რათა ამ ტექნოლოგიის სარგებელი მაქსიმალურად ხელმისაწვდომი გახდეს.
განსაკუთრებული მადლობა XDA-ს უფროს აღიარებულ კონტრიბუტორს Dees_Troy და აღიარებული დეველოპერი arter97 მათი დახმარებისა და შეტანისთვის.
შენიშვნა: Huawei/Honor-მა შეწყვიტა თავისი მოწყობილობებისთვის ჩამტვირთველის განბლოკვის ოფიციალური კოდების მიწოდება. აქედან გამომდინარე, მათი მოწყობილობების ჩამტვირთველების განბლოკვა შეუძლებელია, რაც ნიშნავს, რომ მომხმარებლებს არ შეუძლიათ დააყენონ ან დააინსტალირონ Custom ROM.