Otimização do Compilador e Conflitos Load-Store: Um Suspense de Desempenho
Este artigo detalha um problema de desempenho inesperado: um decodificador de geometria simples mostra variações massivas de desempenho em diferentes versões de compiladores. A causa raiz? Um detalhe microarquitetural pouco conhecido: conflitos load-store. O GCC-14 vetorizou o código de forma inteligente, resultando em um aumento de desempenho. No entanto, o GCC-15 regrediu significativamente devido a estratégias de otimização alteradas, levando a frequentes conflitos load-store. O Clang, surpreendentemente, se destacou em arquiteturas ARM, aproveitando as características load-store. Isso destaca que a otimização do compilador não é uma solução mágica; atenção próxima ao código gerado e à microarquitetura de hardware subjacente é crucial.