El proyecto Gentoo introdujo el sistema de gestión de paquetes Portage 3.0

Estabilizado lanzamiento del sistema de gestión de paquetes Portaje 3.0, utilizado en la distribución Gentoo Linux. El hilo presentado resumió el trabajo a largo plazo sobre la transición a Python 3 y el fin del soporte para Python 2.7.

Además del fin del soporte para Python 2.7, otro cambio importante fue la inclusión de optimizaciones, lo que permitió acelerar los cálculos relacionados con la determinación de dependencias en un 50-60%. Curiosamente, algunos desarrolladores sugirieron reescribir el código de resolución de dependencias en C/C++ o Go para acelerar su funcionamiento, pero lograron resolver el problema existente con poco esfuerzo.

El perfil del código existente mostró que la mayor parte del tiempo de cálculo se dedicó a llamar a las funciones use_reduce y catpkgsplit con un conjunto repetido de argumentos (por ejemplo, la función catpkgsplit se llamó de 1 a 5 millones de veces). Para acelerar las cosas, se utilizó el almacenamiento en caché de los resultados de estas funciones mediante diccionarios. La mejor opción para el almacenamiento en caché era la función lru_cache incorporada, pero solo estaba disponible en las versiones de Python a partir de la 3.2. Para compatibilidad con versiones anteriores, se agregó un código auxiliar para reemplazar lru_cache, pero la decisión de suspender el soporte para Python 2.7 en Portage 3.0 simplificó enormemente la tarea e hizo posible prescindir de esta capa.

El uso del caché redujo el tiempo de ejecución de la operación “emerge -uDvpU —with-bdeps=y @world” en la computadora portátil ThinkPad X220 de 5 minutos 20 segundos a 3 minutos 16 segundos (63%). Las pruebas en otros sistemas mostraron un aumento de rendimiento de al menos un 48%.

El desarrollador que preparó el cambio también intentó implementar un prototipo del código de resolución de dependencias en C++ o Rust, pero la tarea era demasiado difícil porque requería portar una gran cantidad de código y era dudoso que el resultado valiera la pena el esfuerzo. .

Fuente: opennet.ru

Añadir un comentario