一套仅含头文件的 C++ 哈希表与 B 树容器库,可替代 std 中的无序和有序容器,速度快、内存占用低。
Cyan4973/xxHash
一个极快的非加密哈希算法 C 库,可在各平台生成一致的 32/64/128 位哈希值。
- Star
- 11,410
- Fork
- 946
- 未关闭 Issue
- 25
- 最近提交
- 9天前
这是什么?
xxHash 是一个用 C 编写的非加密哈希算法,适用于对哈希速度有要求的场景,例如哈希表、布隆过滤器、校验和以及数据去重。它可移植性强,在小端和大端系统上产生完全相同的结果,算法定型后输出在各版本之间保持稳定。
库中提供 XXH32、XXH64 和 XXH3 三种算法,其中 XXH3 支持 64 位和 128 位(XXH128)输出,并使用向量化运算。新项目推荐默认使用 XXH3_64bits()。项目还附带命令行工具 xxhsum,用于生成和校验文件校验和;通过定义 XXH_INLINE_ALL 可以以纯头文件方式集成。
xxHash 不是密码学哈希,不能用于签名、密码存储或其他需要抗攻击性的场景。构建选项涵盖内联、字节序、内存访问方式,以及为嵌入式或资源受限环境减小二进制体积的配置。
核心功能
- 01提供 32 位、64 位和 128 位非加密哈希。
- 02在小端和大端平台上输出完全一致。
- 03XXH3 和 XXH128 支持 AVX2、SSE2 等向量化实现。
- 04提供流式 API,可哈希大小未知的数据。
- 05通过 XXH_INLINE_ALL 支持纯头文件集成。
- 06可通过编译宏缩减二进制体积或关闭功能,适配嵌入式环境。
适用场景
- 为哈希表或布隆过滤器的键计算哈希,尤其是处理小数据时。
- 使用 xxhsum 命令行工具快速生成和校验文件校验和。
- 在存储或数据去重流程中识别重复数据块。
- 在对性能敏感的 C 或 C++ 应用中嵌入快速哈希功能。
快速上手
- 1
使用 make 构建库和 xxhsum 命令行工具
make - 2
使用 xxhsum 通过 XXH3 对此 README 文件进行哈希
./xxhsum -H3 README.md
使用前须知
- xxHash 不是加密哈希,不能用于签名或密码存储。
- 元数据中的许可证显示为 NOASSERTION,使用前请查看仓库中的许可证文件。
标签
#hash-function#checksum#non-cryptographic#performance#hash-table#data-structures#dispersion#hash#hash-checksum#hash-functions
常见问题
- xxHash 是什么?
- 一个极快的非加密哈希算法 C 库,可在各平台生成一致的 32/64/128 位哈希值。 xxHash 是一个用 C 编写的非加密哈希算法,适用于对哈希速度有要求的场景,例如哈希表、布隆过滤器、校验和以及数据去重。它可移植性强,在小端和大端系统上产生完全相同的结果,算法定型后输出在各版本之间保持稳定。
- xxHash 可以免费使用吗?用的什么许可证?
- xxHash 以 Other 许可证开源。用于商业产品前,请先确认许可证条款。
- xxHash 还在维护吗?
- 活跃维护中。xxHash 最近一次提交是在 2026年10月29日。
- xxHash 适合用来做什么?
- 为哈希表或布隆过滤器的键计算哈希,尤其是处理小数据时。 使用 xxhsum 命令行工具快速生成和校验文件校验和。 在存储或数据去重流程中识别重复数据块。 在对性能敏感的 C 或 C++ 应用中嵌入快速哈希功能。
- xxHash 怎么安装和运行?
- 使用 make 构建库和 xxhsum 命令行工具: make 使用 xxhsum 通过 XXH3 对此 README 文件进行哈希: ./xxhsum -H3 README.md
- 在哪里获取 xxHash?
- 源代码和安装说明在 GitHub 上:https://github.com/Cyan4973/xxHash
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
3228+1 本周314C++Apache-2.0更新于 昨天
用于测试哈希函数速度与统计质量的基准工具,附带大量实现的对比结果。
2183192C++Other更新于 16天前
一个 PHP 集合库,用于表示和操作集合数据,设计灵感来自 Java Collections Framework。
120354PHPMIT更新于 3个月前
基于 SIMD 与 SWAR 指令加速的字符串库,支持 C、C++、Python、Rust 等多种语言,涵盖搜索、哈希、排序与编辑距离。
3586+8 本周146CApache-2.0更新于 6天前
面向 Java 高性能场景的数据结构与工具库,包含原始类型集合、堆外缓冲区、队列和定时器轮等。
3266459JavaApache-2.0维护活跃更新于 昨天
一组单文件、公共领域(或 MIT 许可)的 C/C++ 库,涵盖图像读写、字体栅格化与动态数组等。
3.5万+44 本周8115COther更新于 4天前