Otimização da estrutura de dados leva a um aumento inesperado do desempenho da CPU

2025-08-26

Um programa que processa um grande conjunto de dados encontrou gargalos de desempenho de memória e CPU. Inicialmente, o uso de uma única matriz para armazenar dados resultou em até 1 GB de consumo de memória. Empregando programação orientada a dados, a divisão dos dados em várias matrizes economizou aproximadamente 200 MB de memória. Uma otimização adicional envolveu a substituição de uma matriz de strings por índices de matriz de bytes para nomes de campos, reduzindo ainda mais o uso de memória. Surpreendentemente, essa alteração também diminuiu significativamente o uso da CPU. A razão reside no mecanismo de coleta de lixo: o processamento de uma matriz de strings requer que o GC percorra todos os objetos de string, enquanto o processamento de uma matriz de bytes não, reduzindo drasticamente a sobrecarga do GC.