C stdioやiostreamsに代わる高速で型安全なC++フォーマットライブラリ。C++20のstd::formatを実装しています。
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
Pythonパッケージをインストールする
pip install stringzilla - 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 の数値は毎日更新されます。
関連プロジェクト
完全な検証を行いながら、SIMD命令で毎秒数GBのJSONを解析するC++パーサー。
Pythonでコンパイラパイプラインをカスタマイズし、多様なハードウェアにモデルをデプロイできるオープンな機械学習コンパイルフレームワーク。
ネストしたオブジェクトの詳細比較や検索、内容に基づくハッシュ生成、差分の保存・適用ができるPythonライブラリ。
Elm Architectureを基盤とするGo製ターミナルUIフレームワーク。Unicodeに準拠したレイアウト、インライン/全画面描画、コンポーネントライブラリを備えています。
画像をピクセル単位で比較して差分画像を生成する、高速なSIMD最適化対応CLIツール兼Node.jsライブラリ。