XDA Myth Busters: Linaro 4.7.4 vs. GCC 4.7

ოპტიმიზებული ხელსაწყოების ჯაჭვის მნიშვნელობა ერთ-ერთი ყველაზე აქტუალური თემაა Android დეველოპერის სამყაროში. შესაძლოა ბევრ თქვენგანს გსმენიათ GCC-ისა და Linaro-ს შესახებ, რომლებიც ამ ტიპის ორი უდიდესი პროექტია. GCC არის ძველი ხელი, რომელიც თავდაპირველად გამოვიდა 1987 წელს, ხოლო ლინარო შედარებით ახალგაზრდა მოთამაშეა მხოლოდ ოთხი წლის.

მოდით, ჯერ ჩავუღრმავდეთ ამ ორი პროექტის ისტორიას. როგორც ადრე ვთქვი, GNU Compiler-ის კოლექცია ძველია. წლების განმავლობაში მას იყენებდნენ სხვადასხვა პროექტების, მათ შორის ანდროიდის, შედგენისთვის. Google-მა გადაწყვიტა გამოეყენებინა 4.6 და 4.7 ვერსიები, როგორც მათი ნაგულისხმევი ინსტრუმენტების ჯაჭვები და მსურს ყურადღება გავამახვილო 4.7 ვერსიაზე ამ ტესტების სერიაში.

Linaro ამოქმედდა 2010 წელს და ის ოპტიმიზირებულია ARM არქიტექტურისთვის. და რა თქმა უნდა, ARM გამოიყენება Android-ზე მომუშავე სმარტფონებისა და ტაბლეტების აბსოლუტურ უმრავლესობაში. თქვენ შეგიძლიათ იპოვოთ Linaro, როგორც ინსტრუმენტთა ჯაჭვი, რომელიც გამოიყენება ბირთვების ან მთლიანი ROM-ების შედგენისთვის, და ბევრი დეველოპერი ამტკიცებს, რომ ეს ინსტრუმენტი უფრო სწრაფი და ძლიერია, ვიდრე GCC.

ჩვენი დეველოპერის ადმინისტრატორის Pulser_G2-ის შთაგონებით, გადავწყვიტე გამომეტანა ეს მითი და ვნახო, რამდენად რეალურია ეს პრეტენზიები. ამისათვის მე ჯერ გადმოვწერე AOSP წყარო. მე ავაშენე aosp_mako-eng სამიზნე ჩემი Nexus 4-ისთვის Google-ის წინასწარ აშენებული ნაგულისხმევი ნაკრების გამოყენებით. შემდეგ ოტაპაკეტის გაკეთება, მე მივიღე 183115481-ბაიტიანი zip ფაილი, რომელიც მზად არის ფლეშისთვის. ამის შემდეგ გადმოვწერე Linaro 4.7.4 ინსტრუმენტთა ჯაჭვი და შევცვალე GCC-ში წინასწარ აშენებული/gcc/linux-86. მე შევასრულე საჭირო ცვლილებები ოპტიმიზაციის O3 დონის დასაყენებლად. ვინაიდან AOSP მხარს უჭერს მხოლოდ წინასწარ აშენებულ ბირთვებს (მოდიფიკაციების გარეშე), მე თვითონ ავაშენე ბირთვი Linaro-ით და შევცვალე ბირთვი mako-kernel-ში ჩემი საკუთარი blob-ით.

 ქვემოთ შეგიძლიათ იხილოთ ორი შედეგიანი არქივი. როგორც ხედავთ, Linaro არქივი ოდნავ უფრო დიდია, ასე რომ, ეს ხელსაწყოების ჯაჭვი რეალურად აკეთებს რაღაცას bin და xbin საქაღალდეებში. თავად ბირთვის ფაილი ასევე უფრო დიდია.

მაგრამ ფაილის ზომა არ არის ყველაზე მნიშვნელოვანი. ამის ნაცვლად, მოდით ფოკუსირება მოვახდინოთ შესრულებაზე. ამის გასაზომად მე გამოვიყენე AnTuTu საორიენტაციო ნიშანი. გაზრდილი სიზუსტისთვის, ყოველი ტესტი სამჯერ ჩავატარე. როგორც ქვემოთ ხედავთ, განსხვავება საკმაოდ დიდია. თუმცა, ამ ტესტებს დიდად ბრმა რწმენას არ ვაქცევდი, რადგან ყველა ტესტის შედეგები განსხვავებული იყო. ამის თქმით, Linaro რამდენიმე ქულით უკეთესი იყო GCC-ზე, მაგრამ AnTuTu არც ისე სანდოა, როგორც თქვენ ფიქრობთ.

GCC

ლინარო

შემდეგი ტესტები ჩატარდა 3DMark-ით, რათა დაენახათ, შეუძლია თუ არა ინსტრუმენტთა ჯაჭვმა გავლენა მოახდინოს გრაფიკის შესრულებაზე. განსხვავება კიდევ უფრო მნიშვნელოვანი იყო, ვიდრე ანტუტუსთან. თქვენ შეგიძლიათ მიიღოთ რამდენიმე FPS GCC-ით, მაგრამ მთლიანი სიმსუბუქე უკეთესია Linaro-ით. ქულაც ცოტა მაღალია.

GCC

ლინარო

საბოლოო ტესტი ჩატარდა თამაშის გამოყენებით Asphalt 8: Airborne. ქვემოთ შეგიძლიათ იხილოთ თამაშის ორი ვიდეო, რომელიც მუშაობს ორივე ინსტრუმენტთა ჯაჭვზე. პირველი გაკეთდა Linaro-თ, ხოლო მეორე GCC-ით. პირადად მე ვფიქრობ, რომ Linaro თავს ოდნავ გლუვს გრძნობს, ვიდრე GCC, მაგრამ ეს შეიძლება იყოს პლაცებო ეფექტი, რადგან ეს არ იყო ორმაგად ბრმა ტესტი. ორივე ბირთვი იყო საფონდო და თავისუფალი შესწორებისგან, გადატვირთვისა და ნებისმიერი სხვა ლამაზი შესწორებისგან შესრულების გასაუმჯობესებლად.

//www.youtube.com/embed/BZRZenaNr9A

ასე რომ, ლინარო უკეთესია?

მიუხედავად იმისა, რომ თავიდან სკეპტიკურად ვიყავი განწყობილი, უნდა ვაღიარო, რომ Linaro, როგორც ჩანს, უკეთესი არჩევანია, ვიდრე GCC, ყოველ შემთხვევაში, ჩემი აპარატურის კონფიგურაციაში. ოპერაციული სისტემა უფრო მგრძნობიარე და სწრაფი იყო, ვიდრე GCC-ის გამოყენებით აშენებული. თუმცა, GCC კვლავ მყარია, ასე რომ, თუ თქვენ გჭირდებათ საბოლოო სტაბილურობა, ის მაინც შეიძლება იყოს საუკეთესო არჩევანი.

შემდეგ ეპიზოდებში შევეცდები შევადარო სხვა ინსტრუმენტთა ჯაჭვები, როგორიცაა SaberMod და Linaro 4.8. გთხოვთ, შეგვატყობინოთ თქვენი საყვარელი ხელსაწყოების შესახებ ქვემოთ მოცემულ კომენტარებში. და თუ გნებავთ, რომ შევამოწმოთ რაიმე სხვა ხელსაწყოების ჯაჭვები, გთხოვთ, ასე თქვით!