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

Estabilizado lanzamiento del sistema de gestión de paquetes Portage 3.0, utilizado en la distribución Gentoo Linux. La rama presentada resume un largo trabajo de transición a Python 3 y un cese de soporte para Python 2.7.

Además de la finalización del soporte para Python 2.7, otro cambio importante fue la inclusión de optimizaciones, que permitieron acelerar los cálculos relacionados con la determinación de dependencias en un 50-60%. Es interesante que algunos desarrolladores sugirieron reescribir el código de resolución de dependencias en C/C++ o Go para acelerar su ejecución, pero lograron resolver el problema con un esfuerzo mínimo.

La realización de un perfilado del código existente mostró que la mayor parte del tiempo en los cálculos se gastaba en la llamada a las funciones use_reduce y catpkgsplit con un conjunto repetido de argumentos (por ejemplo, la función catpkgsplit se llamó entre 1 y 5 millones de veces). Para acelerar el proceso, se aplicó caching de los resultados de esas funciones utilizando diccionarios. La opción óptima para almacenar el caché fue la función incorporada lru_cache, pero solo estaba disponible en las versiones de Python a partir de la 3.2. Para mantener la compatibilidad con versiones anteriores, se agregó un reemplazo que sustituía lru_cache, pero la decisión de cesar el soporte para Python 2.7 en Portage 3.0 simplificó enormemente la tarea y permitió prescindir de esta capa.

El uso de caché permitió reducir el tiempo de ejecución de la operación "emerge -uDvpU —with-bdeps=y @world" en una laptop ThinkPad X220 de 5 minutos y 20 segundos a 3 minutos y 16 segundos (63%). Las pruebas en otros sistemas mostraron un aumento en el 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 resultó demasiado compleja, ya que requería portar una gran cantidad de código, y además, era dudoso que el resultado obtenido justificara el esfuerzo dedicado.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster