Una biblioteca de C++ para crear microbenchmarks que miden pequeños fragmentos de código, con una estructura similar a la de las pruebas unitarias.
rurban/smhasher
Suite de pruebas que mide la velocidad y la calidad estadística de funciones hash, con una amplia tabla de implementaciones evaluadas.
- Estrellas
- 2,183
- Forks
- 192
- Issues abiertos
- 45
- Último commit
- hace 16 días
¿Qué es?
SMHasher es una suite de pruebas para funciones hash. Ejecuta una serie de benchmarks de velocidad con claves grandes y pequeñas, mide el costo de búsqueda en hash maps y aplica pruebas de calidad estadística, como recuento de colisiones, sesgo, avalancha y comprobaciones de coherencia, para revelar debilidades en la salida de una función.
El repositorio también publica una amplia tabla comparativa que abarca cientos de funciones hash criptográficas y no criptográficas, como MurmurHash, xxHash, wyhash, CityHash, FarmHash, SipHash y muchas otras. Cada entrada indica el rendimiento, los ciclos por hash de clave pequeña, el rendimiento en hash maps, el tamaño del objeto y las pruebas de calidad que no supera la función. Se incluyen resultados de varias CPU, desde equipos de escritorio x86 hasta un teléfono ARM de 32 bits.
Los datos incluyen las conclusiones del autor. Señala que los hashes rápidos con pequeños defectos de calidad suelen funcionar bien en tablas hash reales, mientras que los usos sensibles a la seguridad requieren diseños criptográficos o con clave.
Funciones clave
- 01Evalúa el rendimiento con claves grandes y el costo en ciclos del hashing de claves pequeñas.
- 02Mide el rendimiento de búsqueda en hash maps y el tamaño de los objetos para analizar el inlining.
- 03Ejecuta pruebas de calidad estadística de colisiones, sesgo, avalancha y coherencia.
- 04Publica tablas comparativas ordenables de varias plataformas de CPU.
Casos de uso
- Elegir una función hash para implementar una tabla hash o una tabla de símbolos.
- Comparar la velocidad y la calidad de varias funciones hash candidatas antes de adoptar una.
- Validar una nueva implementación de función hash con suites de pruebas conocidas.
- Estudiar las compensaciones entre la velocidad del hash, el comportamiento ante colisiones y el rendimiento de las tablas hash.
Antes de usarlo
- La licencia no está claramente especificada (los metadatos indican NOASSERTION), por lo que las condiciones de reutilización no están claras.
En colecciones
Temas
Preguntas frecuentes
- ¿Qué es smhasher?
- Suite de pruebas que mide la velocidad y la calidad estadística de funciones hash, con una amplia tabla de implementaciones evaluadas. SMHasher es una suite de pruebas para funciones hash. Ejecuta una serie de benchmarks de velocidad con claves grandes y pequeñas, mide el costo de búsqueda en hash maps y aplica pruebas de calidad estadística, como recuento de colisiones, sesgo, avalancha y comprobaciones de coherencia, para revelar debilidades en la salida de una función.
- ¿smhasher es gratuito? ¿Qué licencia tiene?
- smhasher es open source bajo la licencia Other. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿smhasher sigue mantenido?
- Mantenimiento activo. El último commit de smhasher fue el 22 oct 2026.
- ¿Para qué puedo usar smhasher?
- Elegir una función hash para implementar una tabla hash o una tabla de símbolos. Comparar la velocidad y la calidad de varias funciones hash candidatas antes de adoptar una. Validar una nueva implementación de función hash con suites de pruebas conocidas. Estudiar las compensaciones entre la velocidad del hash, el comportamiento ante colisiones y el rendimiento de las tablas hash.
- ¿Dónde consigo smhasher?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/rurban/smhasher
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Biblioteca C de hashing no criptográfico de alta velocidad, con hashes idénticos de 32, 64 y 128 bits en distintas plataformas.
Aplicación Java de código abierto para hacer pruebas de carga y medir el rendimiento de aplicaciones web y otros servicios.
Framework de pruebas unitarias y de componentes basado en Vite que reutiliza la configuración, los transformers y los plugins de Vite.
Un framework de testing para Python que facilita escribir pruebas pequeñas y escalar a pruebas funcionales complejas para aplicaciones y bibliotecas.
Una macro procedural de Rust que usa la API de ChatGPT para generar cuerpos de funciones y casos de prueba durante la compilación.