Uma biblioteca C++ para criar microbenchmarks que medem o tempo de pequenos trechos de código, com uma estrutura semelhante à de testes unitários.
rurban/smhasher
Suíte de testes que mede a velocidade e a qualidade estatística de funções hash e apresenta uma ampla tabela de implementações avaliadas.
- Estrelas
- 2,183
- Forks
- 192
- Issues abertas
- 45
- Último commit
- há 16 dias
O que é?
SMHasher é uma suíte de testes para funções hash. Ela executa benchmarks de velocidade com chaves grandes e pequenas, mede o custo de consulta em hash maps e aplica testes de qualidade estatística, como contagem de colisões, viés, avalanche e verificações de sanidade, para revelar pontos fracos na saída de uma função.
O repositório também publica uma ampla tabela comparativa com centenas de funções hash criptográficas e não criptográficas, incluindo MurmurHash, xxHash, wyhash, CityHash, FarmHash, SipHash e muitas outras. Cada entrada apresenta throughput, ciclos por hash de chave pequena, desempenho em hash maps, tamanho do objeto e os testes de qualidade que a função não passa. Os resultados abrangem várias CPUs, de desktops x86 a um celular ARM de 32 bits.
As conclusões do autor acompanham os dados. Ele observa que hashes rápidos com pequenas falhas de qualidade costumam funcionar bem em hash tables reais, enquanto usos sensíveis à segurança exigem soluções criptográficas ou com chave.
Recursos principais
- 01Compara o throughput com chaves grandes e o custo, em ciclos, do hashing de chaves pequenas.
- 02Mede o desempenho de consultas em hash maps e o tamanho dos objetos para analisar o inlining.
- 03Executa testes de qualidade estatística para colisões, viés, avalanche e sanidade.
- 04Publica tabelas comparativas classificáveis para várias plataformas de CPU.
Casos de uso
- Escolher uma função hash para implementar uma hash table ou uma tabela de símbolos.
- Comparar a velocidade e a qualidade de funções hash candidatas antes de adotar uma delas.
- Validar uma nova implementação de função hash usando suítes de testes conhecidas.
- Estudar as compensações entre velocidade do hash, comportamento de colisões e desempenho de hash tables.
Antes de usar
- A licença não está claramente especificada (os metadados indicam NOASSERTION), portanto os termos de reutilização não estão claros.
Em coleções
Tópicos
Perguntas frequentes
- O que é smhasher?
- Suíte de testes que mede a velocidade e a qualidade estatística de funções hash e apresenta uma ampla tabela de implementações avaliadas. SMHasher é uma suíte de testes para funções hash. Ela executa benchmarks de velocidade com chaves grandes e pequenas, mede o custo de consulta em hash maps e aplica testes de qualidade estatística, como contagem de colisões, viés, avalanche e verificações de sanidade, para revelar pontos fracos na saída de uma função.
- smhasher é gratuito? Qual é a licença?
- smhasher é open source sob a licença Other. Confira os termos da licença antes de usá-lo em produtos comerciais.
- smhasher ainda é mantido?
- Manutenção ativa. O último commit de smhasher foi em 22 de out. de 2026.
- Para que posso usar smhasher?
- Escolher uma função hash para implementar uma hash table ou uma tabela de símbolos. Comparar a velocidade e a qualidade de funções hash candidatas antes de adotar uma delas. Validar uma nova implementação de função hash usando suítes de testes conhecidas. Estudar as compensações entre velocidade do hash, comportamento de colisões e desempenho de hash tables.
- Onde consigo smhasher?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/rurban/smhasher
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Biblioteca C para hashing não criptográfico extremamente rápido, com hashes de 32, 64 e 128 bits idênticos em diferentes plataformas.
Aplicativo Java de código aberto para testar carga e medir o desempenho de aplicações web e outros serviços.
Framework de testes unitários e de componentes baseado no Vite, que reutiliza a configuração, os transformers e os plugins do Vite nos testes.
Um framework de testes para Python que facilita a criação de testes simples e também dá conta de testes funcionais complexos para aplicações e bibliotecas.
Uma macro procedural para Rust que usa a API do ChatGPT para gerar corpos de funções e casos de teste em tempo de compilação.