უკან დაბრუნება
Python 3.15-ის ბენჩმარკი: უმნიშვნელო მატება 3.14-თან შედარებით, JIT-ის აშკარა გაუმჯობესება
SiTech AI Team2 წთ. საკითხავი

Python 3.15-ის ბენჩმარკი: უმნიშვნელო მატება 3.14-თან შედარებით, JIT-ის აშკარა გაუმჯობესება

მიგელ გრინბერგის არაფორმალური ბენჩმარკი Python 3.15.0rc3-ს 3.10-მდე ვერსიებს ადარებს. 3.14-თან შედარებით წარმადობის მატება მცირეა, თუმცა ექსპერიმენტული JIT აშკარა დაჩქარებას იძლევა, free-threading კი მრავალნაკადიან ტესტებში გამოირჩევა.

ახალი არაფორმალური ბენჩმარკი, რომელიც პროგრამული უზრუნველყოფის ინჟინერმა მიგელ გრინბერგმა ჩაატარა, Python 3.15-ს 3.10-მდე წინა ვერსიებს ადარებს და აღმოაჩენს, რომ მომავალი ვერსია წინამორბედზე მხოლოდ ოდნავ უფრო სწრაფია. ყველაზე თვალსაჩინო გაუმჯობესება ექსპერიმენტულ JIT კომპილატორს მოაქვს, free-threading კი თავის ღირებულებას მრავალნაკადიან დატვირთვებში აჩვენებს.

ბენჩმარკის პარამეტრები

ტესტები ჩატარდა Linux-ლეპტოპზე Intel Core i5-ის პროცესორით. ორი პროგრამა გამოიყენეს: fibo.py, რომელიც რეკურსიით ფიბონაჩის რიცხვებს ითვლის, და bubble.py, რომელიც for-ციკლებით 10 000 შემთხვევით რიცხვს ალაგებს. თითოეული პროგრამა ერთნაკადიან და ოთხნაკადიან რეჟიმებში გაეშვა, ხანგრძლივობები კი სამი გაშვების საშუალო მნიშვნელობით გამოითვალა. მატრიცა ასევე მოიცავდა PyPy 3.12-ს, Node.js 26.3-სა და Rust 1.97-ს ეკოსისტემის კონტექსტისთვის, დამატებით CPython 3.13-ის და უფრო ახალი ვერსიების JIT და free-threading ბილდებს. ავტორმა 3.15.0rc3 release candidate ვერსია შეამოწმა, ოფიციალური 3.15-ის გამოშვებამდე კი წერის მომენტში ჯერ რამდენიმე დღე იყო დარჩენილი.

ერთნაკადიანი შედეგები

Python 3.15-მა ფიბონაჩის ტესტი 6,94 წამში დაასრულა, ოდნავ გაუსწრო 3.14-ს, რომელსაც 7,17 წამი დასჭირდა, და საგრძნობლად უკეთესი იყო 3.10-ზე, რომელსაც 15,94 წამი დასჭირდა. Bubble sort-ის ტესტმა მსგავსი სურათი აჩვენა: 3.15-ს 1,97 წამი, 3.14-ს კი 2,06 წამი. ორივე ტესტში მხოლოდ Python 3.11-მა და 3.14-მა მისცეს მნიშვნელოვანი მატება თავიანთ უშუალო წინამორბედებთან შედარებით, ზოგიერთმა გამოშვებამ კი მცირე რეგრესიაც აჩვენა. PyPy 3.12 კვლავ ყველაზე სწრაფ Python იმპლემენტაციად დარჩა, ფიბონაჩის ტესტზე 3.15-ზე 5,54-ჯერ უფრო სწრაფი იყო, საერთო შედეგებში კი Rust ლიდერობდა 77,24-ჯერ.

Python 3.15-ის JIT კომპილატორმა იმავე ვერსიის სტანდარტული ინტერპრეტატორი ფიბონაჩიზე 1,20-ჯერ, ბაბლურ დალაგებაზე კი 1,28-ჯერ აჯობა. ეს წინა წლების შედეგების საპირისპიროა, როცა JIT სტანდარტულ ბილდს არ აღემატებოდა. free-threading ბილდები ერთნაკადიან სამუშაოში დაახლოებით სტანდარტული ინტერპრეტატორის დონეზე მუშაობდნენ.

მრავალნაკადიანი შედეგები

ოთხი ნაკადით სტანდარტული ინტერპრეტატორი თითქმის არ იცვლება, რადგან GIL ნამდვილ პარალელურ შესრულებას უშლის ხელს. Python 3.15-ის free-threading ბილდმა ფიბონაჩის ტესტი სტანდარტულ ინტერპრეტატორთან შედარებით დაახლოებით 4,5-ჯერ უფრო სწრაფად გაიარა, რაც 3.14-ის მაჩვენებლის მსგავსია, ბაბლურ დალაგებაზეც უფრო სწრაფი იყო. JIT ბილდმა მრავალი ნაკადის დროსაც შეინარჩუნა მსგავსი უპირატესობა სტანდარტულ ინტერპრეტატორთან, რაც, ავტორის შენიშვნით, 3.15-ში ახალია.

დასკვნები

ავტორი Python 3.15-ს 3.14-თან შედარებით საკმაოდ უმნიშვნელო წარმადობის გაუმჯობესებად მიიჩნევს, ზოგიერთი ტესტი კი მცირე რეგრესიას აჩვენებს. ერთადერთი აშკარა მოგება JIT-შია, რომელიც ჯერ კიდევ ექსპერიმენტულია და პროდაქშენისთვის არ არის რეკომენდებული. ავტორი გეგმავს, რომ საწარმოო პროექტები ჯერ 3.14-ზე დატოვოს, 3.15-ს კი ყოველდღიურ ინტერპრეტატორად გამოიყენოს ისეთი ახალი შესაძლებლობებისთვის, როგორიცაა JavaScript-ის მსგავსი comprehensions-ის გაშლა და lazy imports.

წყაროები: blog.miguelgrinberg.com

SSiTech

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

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