უკან დაბრუნება
როგორ დაჩქარდა rustc სექტემბერში: საშუალო კომპილაციის დრო 4,57%-ით შემცირდა
SiTech AI Team2 წთ. საკითხავი

როგორ დაჩქარდა rustc სექტემბერში: საშუალო კომპილაციის დრო 4,57%-ით შემცირდა

2026 წლის 29 ივლისიდან 28 სექტემბრამდე rustc-ის კომპილაციის საშუალო დრო 4,57%-ით შემცირდა: 629 საბენჩმარკო გაზომვიდან 555 გაუმჯობესდა, მხოლოდ 74 გაუარესდა. მიმოხილვა Nicholas Nethercote-მა გამოაქვეყნა.

Rust-ის კომპილატორის შესრულების მორიგი მიმოხილვა Nicholas Nethercote-მა 30 სექტემბერს გამოაქვეყნა. წინა ანგარიშიდან ორი თვე გავიდა და ამ პერიოდში rustc შესამჩნევად დაჩქარდა.

საერთო შედეგი

2026 წლის 29 ივლისიდან 28 სექტემბრამდე პერიოდის გაზომვებით, კომპილაციის საშუალო დრო 4,57%-ით შემცირდა. 629 საბენჩმარკო გაზომვიდან 555 გაუმჯობესდა, მხოლოდ 74 გაუარესდა, ხოლო რამდენიმე ბენჩმარკმა ორნიშნა პროცენტული კლება აჩვენა. ავტორი ამ შედეგს „მწვანე ზღვას“ უწოდებს.

rustdoc, Clippy და LLVM 23

rustdoc-ზე დიდი დაჩქარება Noah Lev-მა მოახდინა და ცალკე პოსტშიც ახსნა, როგორ მიაღწია ამას. Clippy-სთვის PGO ჩართო Jakub Beránek-მა (#159642): wall-time გაუმჯობესდა Clippy-ს ბენჩმარკების უმეტესობაზე, საუკეთესო შემთხვევაში 18%-ით.

Nikita Popov-მა კომპილატორში გამოყენებული LLVM ვერსია LLVM 23-მდე განაახლა (#158734). LLVM-ის განახლება ჩვეულებრივ დაჩქარებას იძლევა: ყველა ბენჩმარკზე საშუალო wall-time 1,2%-ით შემცირდა, რაც ერთი ცვლილებისთვის მნიშვნელოვანია.

ახალი borrow checker და trait solver

Nightly არხზე ჩაირთო ახალი borrow checker Polonius Alpha. ის უფრო ზუსტია და ზოგიერთ ვალიდურ პროგრამას იღებს, რომელსაც ძველი მიდგომა უარყოფდა, თუმცა მეტ სამუშაოს ასრულებს და ცალკეულ შემთხვევებში კომპილაციის დროსაც ზრდის. ეს პოპულარულ serde-ს ბიბლიოთეკასაც შეეხო. Jack Huey-მ (#161938) liveness-ის გამოთვლები მოთხოვნადი გახადა: serde-სთვის ინსტრუქციების რაოდენობა 3-5%-ით შემცირდა. #163027-ში მან მონაცემთა სტრუქტურა და ინლაინინგი შეცვალა, რაც უმეტეს ბენჩმარკზე 1%-ზე ნაკლებ კლებას იძლევა.

Nightly-ზე ჩაირთო ახალი trait solver-იც, რომელიც შემთხვევების მცირე ნაწილში ნელა მუშაობს. მის შესრულებაზე დეტალური პოსტი Jana Dönszelmann-მა დაწერა. Nethercote-ის ცვლილებებმა (#160479, #160605, #160801, #160892, #161077, #161211) ზოგიერთ გამონაკლის კრეიტზე კომპილაციის დრო მკვეთრად შეამცირა: ერთგან 50%-ით, სხვაგან 25%-ით, კიდევ ერთგან 15%-ით, ერთ სტრეს-ტესტზე უფრო მეტადაც.

xmakro და dataflow ანალიზი

ახალმა კონტრიბუტორმა xmakro-მ რამდენიმე ოპტიმიზაცია შეიტანა. #157281-ში მან სპეციალიზაციის გრაფის აგებისას impl-ების დამუშავება გააუმჯობესა: ციკლების რაოდენობა ყველა ბენჩმარკზე საშუალოდ 1,58%-ით შემცირდა. #158059-ში ინკრემენტული კომპილაციის მონაცემების ჩატვირთვა დაჩქარდა (საუკეთესო შემთხვევაში 6%), #160473-ში ცხელ obligations-ის გზაზე ალოკაციები შეამცირა (2%), ხოლო #160268-ში დინამიური დისპეტჩერიზაცია სტატიკურით შეცვალა.

Nethercote-მა dataflow ანალიზებისთვის CFG-ის გავლის ალგორითმი შეცვალა (#160193). cranelift-codegen-ის კრეიტში ერთ ფუნქციას 18 000-ზე მეტი საბაზისო ბლოკი აქვს: ძველი ალგორითმით EverInitializedPlaces-ის ანალიზს fixpoint-ამდე 1,5 მილიონი გამოძახება სჭირდებოდა, ახლით 90 000. ამ კრეიტის check-აწყობისთვის wall-time დაახლოებით 30%-ით შემცირდა. #160033-ში EverInitializedPlaces კიდევ დაიხვეწა, რამაც match-stress ბენჩმარკზე ინსტრუქციების რაოდენობა 17%-ით შეამცირა.

დანარჩენ ცვლილებებს შორისაა #160535, სადაც Chris Denton-მა სტეკის ნაგულისხმევი ზომა გაზარდა (საუკეთესო შემთხვევაში თითქმის 3%). Nethercote ხვალ Hexcat-ში იწყებს მუშაობას rustc-ის შესრულების ოპტიმიზაციის პროექტზე.

SSiTech

SiTech — AI-გაძლიერებული ვებ დეველოპმენტი

ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.