Para inclusão no núcleo do Linux, foi proposto um conjunto de patches com uma implementação otimizada da função memchr(), usada para buscar um caractere em um array. Ao contrário da versão anterior, que utilizava comparação byte a byte, a implementação proposta é construída levando em conta o uso total dos registradores de CPU de 64 e 32 bits. Em vez de bytes, a comparação é feita usando palavras de máquina, permitindo comparar pelo menos 4 bytes de uma só vez.
Ao buscar em strings grandes, a nova versão se mostrou aproximadamente 4 vezes mais rápida do que a antiga (por exemplo, para strings de 1000 caracteres). Para strings menores, a eficiência da nova implementação não é tão significativa, mas ainda assim é superior em comparação à versão original. No núcleo do Linux, o tamanho das strings processadas na função memchr() atinge 512 bytes. O ganho de desempenho para strings de 512 bytes, quando o caractere procurado está no final da string, é de 20%.
O teste do núcleo 5.18 com a nova versão do 'memchr()' para arquiteturas de 32 e 64 bits não revelou quaisquer problemas. O ganho total de desempenho dos subsistemas do núcleo ao usar a versão otimizada do 'memchr()' ainda não foi avaliado, assim como a viabilidade de substituir a implementação (no código do núcleo, a chamada da função memchr() ocorre 129 vezes, incluindo no código dos drivers e sistemas de arquivos).
Fonte: opennet.ru
