Repolode
ashvardanian

ashvardanian/StringZilla

基于 SIMD 与 SWAR 指令加速的字符串库,支持 C、C++、Python、Rust 等多种语言,涵盖搜索、哈希、排序与编辑距离。

Star
3,574
Fork
145
未关闭 Issue
33
最近提交
14小时前

这是什么?

StringZilla 是一个文本处理库,利用 SIMD 和 SWAR 指令加速常见字符串操作,包括子串与字符集搜索、哈希、排序、Levenshtein 距离与比对打分,以及 Unicode 大小写折叠和分段。它的接口尽量与标准库保持一致,例如 Python 的 str.find、C 的 strstr、C++ 的 std::string::find 都有对应的替代写法,迁移基本只需替换调用。

核心是一个单头文件 C 库加 C++ 封装,同时提供 Python、Rust、JavaScript、Swift、Go、C# 和 Java 绑定。上层的 StringZillas 提供并行 CPU 与 CUDA GPU 后端,用于批量编辑距离、比对分数和滚动指纹计算。项目还包含基于 AES 指令的哈希函数,以及在支持时利用硬件 SHA 扩展的 SHA-256 实现。

该库面向 x86、Arm、RISC-V、PowerPC 和 WebAssembly 等架构,并力求在字节序、字长和操作系统上保持可移植。不同语言绑定的功能成熟度不一,部分 Unicode 功能仍在积极开发中。

核心功能

  • 01基于 SIMD 与 SWAR 指令加速的子串和字符集搜索。
  • 02提供基于 AES 的 64 位哈希以及硬件加速的 SHA-256。
  • 03支持字符串集合的排序与交集运算。
  • 04支持 Levenshtein 与 Needleman-Wunsch 距离计算,并可通过 CUDA 批量运行。
  • 05支持 Unicode 大小写折叠、UTF-8 处理与 TR29 分段。
  • 06提供 C、C++、Python、Rust、JavaScript、Swift、Go、C# 和 Java 绑定。

适用场景

  • 加速解析大规模文本语料的数据处理流程。
  • 替换性能敏感服务中较慢的子串搜索或哈希调用。
  • 为生物信息学或搜索任务批量计算编辑距离或比对分数。
  • 在数据库引擎中加速 LIKE、ORDER BY、GROUP BY 类操作。

快速上手

  1. 1

    安装 Python 包

    pip install stringzilla
  2. 2

    在 Python 中替代 str 使用

使用前须知

  • 并非所有功能都在每种语言绑定中可用。
  • 部分 Unicode 功能(规范化、分段、换行检测)仍处于开发中。

收录于专题

标签

常见问题

StringZilla 是什么?
基于 SIMD 与 SWAR 指令加速的字符串库,支持 C、C++、Python、Rust 等多种语言,涵盖搜索、哈希、排序与编辑距离。 StringZilla 是一个文本处理库,利用 SIMD 和 SWAR 指令加速常见字符串操作,包括子串与字符集搜索、哈希、排序、Levenshtein 距离与比对打分,以及 Unicode 大小写折叠和分段。它的接口尽量与标准库保持一致,例如 Python 的 str.find、C 的 strstr、C++ 的 std::string::find 都有对应的替代写法,迁移基本只需替换调用。
StringZilla 可以免费使用吗?用的什么许可证?
StringZilla 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
StringZilla 还在维护吗?
活跃维护中。StringZilla 最近一次提交是在 2026年10月22日。
StringZilla 适合用来做什么?
加速解析大规模文本语料的数据处理流程。 替换性能敏感服务中较慢的子串搜索或哈希调用。 为生物信息学或搜索任务批量计算编辑距离或比对分数。 在数据库引擎中加速 LIKE、ORDER BY、GROUP BY 类操作。
StringZilla 怎么安装和运行?
安装 Python 包: pip install stringzilla 在 Python 中替代 str 使用
在哪里获取 StringZilla?
源代码和安装说明在 GitHub 上:https://github.com/ashvardanian/StringZilla

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目