2 pontos por GN⁺ 2024-08-25 | Ainda não há comentários. | Compartilhar no WhatsApp

Compartilhando uma experiência de melhoria de desempenho no serde_json

  • Introdução
    • Recentemente, por meio de um trabalho de otimização, a velocidade de processamento de strings no serde_json foi melhorada em 20%.
    • Foram usados serde, o framework de serialização e desserialização do Rust, e serde_json, para o processamento de JSON.
    • Melhorias de desempenho podem trazer benefícios para todo o ecossistema.

Ponto de partida

  • Trabalho na biblioteca #[iex]
    • serde e serde_json foram usados como benchmark de desempenho.
    • Foi encontrada uma decisão questionável em um código sensível a desempenho.
    • O caminho de erro era mais de duas vezes mais lento que o caminho de sucesso.

Resolvendo o problema

  • Otimização do caminho de erro
    • A função position_of_index causava o gargalo.
    • O crate memchr foi usado para otimizar a busca em strings.
    • Resultado da melhoria: aumento de velocidade no caminho de erro.

Otimizações adicionais

  • Otimização do parsing de strings
    • A tentativa de usar a função memchr2 falhou.
    • A busca por caracteres de controle foi otimizada com a técnica SWAR (SIMD dentro de registradores).
    • O problema de queda de desempenho em strings curtas foi resolvido.

Processamento de Unicode

  • Otimização do parsing de Unicode
    • O desempenho da decodificação hexadecimal foi melhorado.
    • Uma decodificação eficiente foi implementada usando a tabela HEX.
    • Resultado da melhoria: a velocidade de parsing de War and Peace codificado em JSON aumentou 21%.

Resultado final

  • Otimização da codificação UTF-8
    • Em vez da função char::encode_utf8, foi implementada diretamente a codificação UTF-8.
    • Resultado da melhoria: a velocidade de parsing de War and Peace aumentou mais 9%.

Resumo do GN⁺

  • Este texto compartilha a experiência de melhorar em 20% o desempenho do serde_json, amplamente usado no ecossistema Rust.
  • O processo de otimização de desempenho aborda várias técnicas e formas de resolver problemas.
  • As otimizações de Unicode e de parsing de strings melhoram significativamente o desempenho no processamento de JSON.
  • O texto será útil para desenvolvedores interessados em otimização de desempenho e terá um impacto positivo em todo o ecossistema Rust.

Ainda não há comentários.

Ainda não há comentários.