Проект Gentoo представил систему управления пакетами Portage 3.0
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Стабилизирван выпуск системы управления пакетами 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
===========
Похожие новости
- Главная ссылка к новости (https://www.gentoo.org/news/20...)
- OpenNews: Проект Gentoo опубликовал сборку для мобильных устройств, поставляемых с Android
- OpenNews: Разработчики Gentoo рассматривают возможность подготовки бинарных сборок ядра Linux
- OpenNews: Gentoo исполнилось 20 лет
- OpenNews: Выпуск дистрибутива Funtoo 1.4, развиваемого основателем Gentoo Linux
- OpenNews: Проект Gentoo опубликовал отчёт о взломе своих репозиториев на GitHub
Похожие новости:
- [*nix] Кризис дистрибутивостроения или «о Gentoo в последний раз»
- Проект Gentoo опубликовал сборку для мобильных устройств, поставляемых с Android
- Вышел Calculate Linux 20.6
- Разработчики Gentoo рассматривают возможность поставки бинарных сборок ядра Linux
- Gentoo исполнилось 20 лет
- Выпуск дистрибутива Funtoo 1.4, развиваемого основателем Gentoo Linux
- В Gentoo объявлена стабильной поддержка архитектуры AArch64 (ARM64)
- [*nix, Лайфхаки для гиков, Настройка Linux, Системное администрирование] Дело было вечером, делать было нечего, или как установить Gentoo без клавиатуры
- Релиз дистрибутива Sabayon Linux 19.03
- [*nix, Lisp, Open source, Системное программирование] Guix — самая продвинутая операционная система (перевод)
Теги для поиска: #_portage, #_gentoo
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 09:54
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Стабилизирван выпуск системы управления пакетами 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 =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 09:54
Часовой пояс: UTC + 5