O projeto Gentoo introduziu o sistema de gerenciamento de pacotes Portage 3.0

Estabilizado lançamento do sistema de gerenciamento de pacotes Portage 3.0, usado na distribuição Gentoo Linux. O tópico apresentado resumiu o trabalho de longo prazo na transição para Python 3 e o fim do suporte para Python 2.7.

Além do fim do suporte ao Python 2.7, outra mudança importante foi a inclusão do otimizações, o que permitiu agilizar em 50-60% os cálculos relacionados à determinação de dependências. Curiosamente, alguns desenvolvedores sugeriram reescrever o código de resolução de dependências em C/C++ ou Go para acelerar sua operação, mas conseguiram resolver o problema existente com pouco esforço.

A criação de perfil do código existente mostrou que a maior parte do tempo de cálculo foi gasto chamando as funções use_reduce e catpkgsplit com um conjunto repetido de argumentos (por exemplo, a função catpkgsplit foi chamada de 1 a 5 milhões de vezes). Para agilizar, foi utilizado o cache dos resultados dessas funções por meio de dicionários. A melhor opção para armazenamento em cache era a função lru_cache integrada, mas ela só estava disponível em versões do Python a partir da 3.2. Para compatibilidade com versões anteriores, um stub foi adicionado para substituir lru_cache, mas a decisão de descontinuar o suporte para Python 2.7 no Portage 3.0 simplificou bastante a tarefa e tornou possível dispensar esta camada.

O uso do cache reduziu o tempo de execução da operação “emerge -uDvpU —with-bdeps=y @world” no laptop ThinkPad X220 de 5 minutos e 20 segundos para 3 minutos e 16 segundos (63%). Testes em outros sistemas mostraram um aumento de desempenho de pelo menos 48%.

O desenvolvedor que preparou a mudança também tentou implementar um protótipo do código de resolução de dependências em C++ ou Rust, mas a tarefa era muito difícil porque exigia a portabilidade de uma grande quantidade de código, e era duvidoso que o resultado valesse o esforço. .

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção DDoS, servidores VPS VDS 🔥 Compre hospedagem de sites confiável com proteção contra DDoS, servidores VPS/VDS | ProHoster