Repolode
Cyan4973

Cyan4973/xxHash

プラットフォームを問わず同一の32、64、128ビットハッシュを生成する、超高速な非暗号学的ハッシュのCライブラリ。

スター
11,410
フォーク
946
未解決の Issue
25
最終コミット
9 日前

これは何?

xxHashはCで実装された非暗号学的ハッシュアルゴリズムです。ハッシュテーブル、Bloomフィルター、チェックサム、データ重複排除など、ハッシュの速度が重要となる用途を想定しています。移植性が高く、リトルエンディアンとビッグエンディアンのシステムで同一の結果を生成します。また、仕様が確定した後は、リリースをまたいでも出力が安定しています。

ライブラリはXXH32、XXH64、XXH3を提供します。XXH3には、ベクトル演算を用いた64ビット版と128ビット版(XXH128)があります。新しいアプリケーションでは、デフォルトとしてXXH3_64bits()を使うことが推奨されています。チェックサムの生成と検証に使えるコマンドラインツールxxhsumや、XXH_INLINE_ALLによるヘッダーオンリーモードも含まれています。

xxHashは、署名、パスワードの保存、その他のセキュリティが重要な用途には適していません。ビルドオプションでは、インライン化、エンディアン、メモリアクセス方式のほか、組み込み環境やリソースに制約のあるターゲット向けのバイナリサイズ削減を設定できます。

主な機能

  • 0132、64、128ビット幅の非暗号学的ハッシュ。
  • 02リトルエンディアンとビッグエンディアンのプラットフォームで同一の出力。
  • 03AVX2およびSSE2の経路を備えた、ベクトル演算によるXXH3とXXH128の実装。
  • 04サイズが不明な入力をハッシュ化するためのストリーミングAPI。
  • 05XXH_INLINE_ALLによるヘッダーオンリーでの組み込み。
  • 06組み込み環境向けにバイナリサイズを縮小したり、機能を無効化したりするビルドマクロ。

ユースケース

  • 小さな入力に対する処理速度が重要な場合の、ハッシュテーブルやBloomフィルターのエントリーキー生成。
  • コマンドラインツールxxhsumを使った、ファイルの高速なチェックサム計算。
  • ストレージや重複排除パイプラインでの、重複データブロックの検出。
  • パフォーマンスが重視されるCまたはC++アプリケーションへの高速ハッシュの組み込み。

クイックスタート

  1. 1

    make でライブラリと xxhsum CLI をビルドする

    make
  2. 2

    xxhsum を使って、この README ファイルを XXH3 でハッシュ化する

    ./xxhsum -H3 README.md

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

  • xxHash は暗号学的ハッシュではないため、署名やパスワードの保存には使用しないでください。
  • メタデータではライセンスが NOASSERTION と記載されているため、使用前にリポジトリのライセンスファイルを確認してください。

トピック

#hash-function#checksum#non-cryptographic#performance#hash-table#data-structures#dispersion#hash#hash-checksum#hash-functions

よくある質問

xxHash とは?
プラットフォームを問わず同一の32、64、128ビットハッシュを生成する、超高速な非暗号学的ハッシュのCライブラリ。 xxHashはCで実装された非暗号学的ハッシュアルゴリズムです。ハッシュテーブル、Bloomフィルター、チェックサム、データ重複排除など、ハッシュの速度が重要となる用途を想定しています。移植性が高く、リトルエンディアンとビッグエンディアンのシステムで同一の結果を生成します。また、仕様が確定した後は、リリースをまたいでも出力が安定しています。
xxHash は無料で使えますか?ライセンスは?
xxHash は Other ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
xxHash は今もメンテナンスされていますか?
活発にメンテナンス中。xxHash の最終コミットは 2026年10月29日 です。
xxHash は何に使えますか?
小さな入力に対する処理速度が重要な場合の、ハッシュテーブルやBloomフィルターのエントリーキー生成。 コマンドラインツールxxhsumを使った、ファイルの高速なチェックサム計算。 ストレージや重複排除パイプラインでの、重複データブロックの検出。 パフォーマンスが重視されるCまたはC++アプリケーションへの高速ハッシュの組み込み。
xxHash のインストール方法は?
make でライブラリと xxhsum CLI をビルドする: make xxhsum を使って、この README ファイルを XXH3 でハッシュ化する: ./xxhsum -H3 README.md
xxHash はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/Cyan4973/xxHash

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

関連プロジェクト

標準の unordered/ordered コンテナを置き換えられる、高速でメモリ効率に優れたハッシュマップ、セット、B-tree コンテナを提供するヘッダーオンリーの C++ ライブラリ。

3228+1 今週314C++Apache-2.0更新 昨日

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

開発ツール#string-processing#simd#hashing
3586+8 今週146CApache-2.0更新 6 日前

画像読み込み、フォントのラスタライズ、データ構造などに使える、パブリックドメインまたはMITライセンスの単一ファイルC/C++ライブラリ集。

開発ツール#cpp#single-header#image-loading
3.5万+44 今週8115COther更新 4 日前