Repolode
ashvardanian

ashvardanian/StringZilla

C、C++、Python、Rust、JavaScript、Goなどに対応し、検索、ハッシュ、ソート、編集距離の計算をSIMDとSWARで高速化する文字列ライブラリ。

スター
3,574
フォーク
145
未解決の Issue
33
最終コミット
12 時間前

これは何?

StringZillaは、SIMDおよびSWARのCPU命令を使って、部分文字列や文字セットの検索、ハッシュ計算、ソート、Levenshtein距離やアラインメントスコアの計算、Unicodeのケースフォールディングとセグメンテーションなど、一般的な文字列操作を高速化するテキスト処理ライブラリです。標準APIをそのまま置き換えられる補完ライブラリとして設計されており、たとえばPythonのstr.find、Cのstrstr、C++のstd::string::findに対応するStringZillaのAPIが用意されています。

コア部分は単一ヘッダーのCライブラリで、C++ラッパーも備えています。Python、Rust、JavaScript、Swift、Go、C#、Java向けのバインディングも提供されています。さらに、StringZillasレイヤーでは、編集距離、アラインメントスコア、ローリングフィンガープリントのバッチ処理向けに、CPU並列処理とCUDA GPUバックエンドを追加しています。また、AES命令を利用するハッシュ関数と、利用可能な場合にハードウェアのSHA拡張命令を使うSHA-256実装も含まれています。

x86、Arm、RISC-V、PowerPC、WebAssemblyを対象とし、エンディアン、ワードサイズ、OSを問わず動作することを目指しています。バインディングによって機能の成熟度は異なり、一部のUnicode関数は現在も開発中です。

主な機能

  • 01SIMDおよびSWAR命令で高速化した部分文字列検索と文字セット検索。
  • 0264ビットのAESベース関数とハードウェアアクセラレーション対応のSHA-256によるハッシュ計算。
  • 03文字列コレクションのソートと集合の共通部分の計算。
  • 04Levenshtein距離とNeedleman-Wunsch距離の計算。CUDAによるバッチGPU実行にも対応。
  • 05Unicodeのケースフォールディング、UTF-8処理、TR29セグメンテーション。
  • 06C、C++、Python、Rust、JavaScript、Swift、Go、C#、Java向けのバインディング。

ユースケース

  • 大規模なコーパスを解析する、テキスト主体のデータパイプラインの高速化。
  • 性能が重要なサービスで、低速な部分文字列検索やハッシュ関数の呼び出しを置き換える。
  • バイオインフォマティクスや検索の処理で、編集距離やアラインメントスコアをバッチ計算する。
  • データベースエンジン内のLIKE、ORDER BY、GROUP BY形式の操作を高速化する。

クイックスタート

  1. 1

    Pythonパッケージをインストールする

    pip install stringzilla
  2. 2

    strの代わりにPythonから使用する

使う前に知っておきたいこと

  • すべての機能が、すべての言語バインディングで利用できるわけではありません。
  • Unicodeの機能(正規化、セグメンテーション、改行検出)のいくつかは、まだ開発中とされています。

トピック

よくある質問

StringZilla とは?
C、C++、Python、Rust、JavaScript、Goなどに対応し、検索、ハッシュ、ソート、編集距離の計算をSIMDとSWARで高速化する文字列ライブラリ。 StringZillaは、SIMDおよびSWARのCPU命令を使って、部分文字列や文字セットの検索、ハッシュ計算、ソート、Levenshtein距離やアラインメントスコアの計算、Unicodeのケースフォールディングとセグメンテーションなど、一般的な文字列操作を高速化するテキスト処理ライブラリです。標準APIをそのまま置き換えられる補完ライブラリとして設計されており、たとえばPythonのstr.find、Cのstrstr、C++のstd::string::findに対応するStringZillaのAPIが用意されています。
StringZilla は無料で使えますか?ライセンスは?
StringZilla は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
StringZilla は今もメンテナンスされていますか?
活発にメンテナンス中。StringZilla の最終コミットは 2026年10月22日 です。
StringZilla は何に使えますか?
大規模なコーパスを解析する、テキスト主体のデータパイプラインの高速化。 性能が重要なサービスで、低速な部分文字列検索やハッシュ関数の呼び出しを置き換える。 バイオインフォマティクスや検索の処理で、編集距離やアラインメントスコアをバッチ計算する。 データベースエンジン内のLIKE、ORDER BY、GROUP BY形式の操作を高速化する。
StringZilla のインストール方法は?
Pythonパッケージをインストールする: pip install stringzilla strの代わりにPythonから使用する
StringZilla はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/ashvardanian/StringZilla

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト