Проект Gentoo представи система за управление на пакети Portage 3.0

Стабилизиран издаване на система за управление на пакети Portage 3.0, използвана в дистрибуцията Gentoo Linux. Представената версия обобщава дългогодишната работа по преминаване към Python 3 и прекратяване на подкрепата за Python 2.7.

Освен прекратяването на подкрепата за Python 2.7, друго важно нововъведение е включването на оптимизации, които позволиха да се ускори изчисленията, свързани с определяне на зависимости, с 50-60%. Интересно е, че някои разработчици предложиха да се пренапише кодът за разрешаване на зависимости на C/C++ или Go за ускоряване на работата, но беше успяно решен проблемът с малко усилия.

Провеждането на профилиране на съществуващия код показа, че основното време по време на изчисленията се харчи за извикването на функциите use_reduce и catpkgsplit с повторяващ се набор от аргументи (например, функцията catpkgsplit беше извиквана от 1 до 5 милиона пъти). За ускоряване беше приложено кеширане на резултатите от работата на тези функции с помощта на речници. Оптимално за съхранение на кеша беше вградената функция lru_cache, но тя беше достъпна само в версиите на Python, започващи от 3.2. За съвместимост с по-ранни версии беше добавена дубликатна функция, заместваща lru_cache, но решението за прекратяване на подкрепата за Python 2.7 в Portage 3.0 значително улесни задачата и позволи да се мине без този промеждутък.

Използването на кеша позволи да се намали времето за изпълнение на операцията «emerge -uDvpU —with-bdeps=y @world» на лаптоп ThinkPad X220 от 5 минути и 20 секунди на 3 минути и 16 секунди (63%). Тестовете на други системи показаха увеличение на производителността не по-малко от 48%.

Разработчикът, подготвил промяната, също се опита да реализира прототип на код за разрешаване на зависимости на C++ или Rust, но задачата се оказа твърде сложна, тъй като изискваше пренос на голям обем код и, при това, беше съмнително, дали полученият резултат би струвал вложените усилия.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster