linux-BR.org

Notícias de software livre e tecnologias

Vamos tornar a estrutura explícita, processando 16 bytes por vez e depois lidando com o restante separadamente:
Divertidamente, isso já é um pouco mais rápido, mas ainda não está lá.A SROA pode carregar alguma estrutura de dados em várias variáveis locais, que podem, por exemplo, substituir “um ponteiro e uma representação de índice” com “um par de ponteiros”.Além disso, você provavelmente pensa que, para escalar
Código, um compilador escreve melhor montagem do que você.Ele recebe um ponteiro para alguma memória que contém uma estrutura complexa (ptr, len, capacidade tripla); portanto, é difícil o raciocínio sobre a evolução dessa estrutura.O que o compilador pode fazer é carregar essa estrutura da memória, substituindo o agregado por um monte de variáveis locais escalares:
Dessa forma, um compilador novamente ganha poder de raciocínio.

Fonte: https://matklad.github.io/2023/04/09/can-you-trust-a-compiler-to-optimize-your-code.html