Quão rápida é a alocação do GC do RPython?

2025-06-15

Este artigo avalia a velocidade de alocação do garbage collector (GC) do RPython usando um pequeno programa de benchmark do RPython. Os resultados mostram velocidades de alocação surpreendentemente rápidas, superiores a 34 GB/s, superando significativamente o Boehm GC. A análise do código de máquina gerado e dos contadores de desempenho revela que a velocidade do GC do RPython decorre de seu mecanismo eficiente de ponteiro de colisão e sobrecarga mínima do GC. Mesmo em código Python regular com o JIT do PyPy, as velocidades de alocação atingem 17 GB/s.

Leia mais
Desenvolvimento

Acelerando o Render de Imagem de Citações de Shakespeare com Quadtrees e Análise de Intervalos

2025-04-09

O autor participou do Desafio Prospero, com o objetivo de renderizar rapidamente uma imagem 1024x1024 de uma citação de Shakespeare de A Tempestade, gerada por uma fórmula matemática com 7866 operações. Foram exploradas diversas técnicas de otimização, incluindo a subdivisão recursiva de quadtree da imagem, análise de intervalos para simplificar a fórmula e uma otimização de "informações demandadas". Implementado em RPython e C, o autor comparou o desempenho de diferentes estratégias de otimização. A otimização de "informações demandadas" melhorou significativamente a velocidade de renderização, com a implementação final em C incorporando essa otimização alcançando o melhor desempenho.

Leia mais
Desenvolvimento renderização de imagem

Profileamento de memória estatístico de baixa sobrecarga no PyPy: integrando VMProf e o GC

2025-02-25

Esta postagem de blog descreve uma nova abordagem para o profileamento estatístico de memória de baixa sobrecarga para o PyPy. Em vez de registrar todas as alocações, ela amostra a cada n-ésimo byte alocado, integrando inteligentemente a lógica de amostragem na verificação do alocador de ponteiro de colisão do coletor de lixo (GC) do PyPy. Isso garante que o caminho rápido permaneça idêntico com e sem amostragem de memória, minimizando a sobrecarga. Experimentos demonstram bom desempenho em várias taxas de amostragem, oferecendo controle mais preciso e menor sobrecarga para o profileamento de memória.

Leia mais
Desenvolvimento profileamento de memória

JITs de Traçado no PyPy: Uma Escolha Pragmática?

2025-01-10

Esta publicação examina as vantagens e desvantagens dos compiladores JIT de traçado, com foco específico em sua implementação no PyPy. Os JITs de traçado, que geram código rastreando a execução do programa, oferecem benefícios ao lidar com linguagens complexas como Python, cortando efetivamente camadas de abstração e reduzindo a sobrecarga. No entanto, eles também sofrem de instabilidade de desempenho e casos de borda. Com base em duas décadas de experiência com o PyPy, o autor fornece uma análise matizada da adequação dos JITs de traçado, comparando-os com os JITs baseados em métodos. A conclusão sugere que, no contexto do meta-JIT do PyPy e dadas suas restrições de recursos, o traçado continua sendo uma abordagem relativamente pragmática.

Leia mais
Desenvolvimento JIT de traçado