11 pontos por xguru 2024-10-24 | 2 comentários | Compartilhar no WhatsApp
  • Um profiler de CPU, GPU e memória de alto desempenho para Python que realiza várias tarefas que outros profilers Python não fazem ou não conseguem fazer
  • Executa muito mais rápido e, ao mesmo tempo, fornece informações muito mais detalhadas, além de ser o primeiro profiler a integrar sugestões de otimização baseadas em IA
  • Oferece CLI e GUI baseada na web
  • Rápido e preciso
    • Rápido: usa amostragem em vez de depender de instrumentação ou dos recursos de tracing do Python. O overhead normalmente não passa de 10~20% e muitas vezes fica abaixo disso
    • Preciso: os testes de precisão mostraram que o Scalene é um dos profilers mais precisos e mede corretamente o tempo gasto
    • Faz profiling em nível de linha e por função, apontando as funções e linhas de código específicas responsáveis pelo tempo de execução do programa
  • Profiling de CPU
    • Separa e mede o tempo gasto em código Python e código nativo (incluindo bibliotecas), permitindo que desenvolvedores foquem no código que realmente podem otimizar
    • Destaca em vermelho os hotspots que consomem uma parte significativa do tempo de CPU ou das alocações de memória
    • Separa o tempo de sistema para facilitar a identificação de gargalos de I/O
  • Profiling de GPU
    • Reporta o tempo de GPU apenas em sistemas baseados em NVIDIA
  • Profiling de memória
    • Faz profiling de uso de memória e identifica linhas específicas de código que causam aumento de memória por meio de um alocador de memória especial
    • Exibe separadamente a proporção de consumo de memória entre código Python e código nativo
    • Gera perfis de memória por linha
    • Identifica linhas com possibilidade de memory leak
    • O profiling de volume de cópia permite encontrar facilmente cópias não intencionais que ocorrem ao cruzar a fronteira entre Python e bibliotecas (por exemplo, quando um array numpy é convertido por engano em um array Python)
  • Outros recursos
    • Com a opção --reduced-profile, é possível gerar um perfil reduzido que reporta apenas linhas que consomem mais de 1% da CPU ou fazem pelo menos 100 alocações
    • Suporta o decorator @profile, permitindo fazer profiling apenas de funções específicas
    • Permite pausar e retomar o profiling de programas executados em segundo plano (iniciados com &)

2 comentários

 
lethee 2024-10-29

Parece mais leve e potencialmente mais útil do que o Nsight, então vou testar e depois deixar uma análise! Obrigado pela apresentação.

 
xguru 2024-10-30

Se vocês puderem deixar um comentário, eu agradeço. Às vezes, quando posto notícias assim, fico curioso para saber quantas pessoas estão acompanhando. rsrs