ハッシュ関数の専門分野において、 rapidhash と呼ばれる新たな競合が小さなキーのハッシュ処理における最先端のソリューションとして浮上してきました。コミュニティの専門家によると、 rapidhash は非暗号化ハッシュ関数における速度、品質、プラットフォーム互換性のバランスを取るという継続的な探求において、大きな進歩を表しているとのことです。
速度と品質のトレードオフ
ハッシュ関数はコンピューティングの基本的な構成要素として、ハッシュテーブルや辞書からチェックサムやデータ検証まで、あらゆるものに使用されています。理想的なハッシュ関数は、可能な限り迅速にデータを処理しながら、その入力を出力空間に均一に分散させます。しかし、スループット、レイテンシ、品質の間には長い間、基本的なトレードオフが存在してきました。
「ハッシュ関数においては、スループットとレイテンシの間に基本的なトレードオフがあります。 rapidhash アルゴリズムは、文字列辞書などのキーが小さい場合の低レイテンシに明らかに最適化されています。」
rapidhash が特に注目に値するのは、高品質な分散特性を維持しながら、小さなキー(通常100バイト未満の文字列)での例外的なパフォーマンスです。これは、多くの小さな文字列を処理する際にハッシュ関数自体の呼び出しオーバーヘッドが重要になるハッシュマップの実装において特に価値があります。
XXH3を超えて:品質の重要性
XXH3は長年人気のある選択肢でしたが、コミュニティの専門家は、ハッシュ関数の品質を評価するための包括的なテストスイートである SMHasher3 のテストの約15%に失敗すると指摘しています。比較すると、 rapidhash は SMHasher と SMHasher3 の両方ですべてのテストに合格しながら、優れたパフォーマンスを提供しています。
ハッシュ関数の品質とは、ランダムオラクルにどれだけ近似するか、つまり与えられた入力セットを出力空間にどれだけ均一に分散させるかを指します。 SHA-256 のような暗号化ハッシュ関数はこれに優れていますが、通常はかなり遅いです。 rapidhash のような非暗号化関数は、速度と品質の最適なバランスを見つけることを目指しています。
パフォーマンスベンチマークによると、 rapidhash は小さなキー(4〜16バイト)をハッシュする際の平均レイテンシが Apple M3 Pro で1.38ns、 AMD Turin プロセッサで2.31nsという印象的な結果を達成しています。より大きな入力では、 rapidhash は Apple の M4 チップで最大71GB/秒のスループットに達し、同じハードウェア上での XXH3 の49GB/秒を大幅に上回っています。
性能比較:平均レイテンシ(4~16バイトキーのハッシュ化)
ハッシュ関数 | M1 Pro | M3 Pro | Neoverse V2 | AMD Turin |
---|---|---|---|---|
rapidhash | 1.79ns | 1.38ns | 2.07ns | 2.31ns |
xxh3 | 1.92ns | 1.50ns | 2.15ns | 2.35ns |
ピークスループット(16KB~2MBファイルのハッシュ化)
ハッシュ関数 | M1 Pro | M3 Pro | M3 Ultra | M4 | Neoverse V2 |
---|---|---|---|---|---|
rapidhash | 47GB/s | 57GB/s | 61GB/s | 71GB/s | 37GB/s |
xxh3 | 37GB/s | 43GB/s | 47GB/s | 49GB/s | 34GB/s |
特殊なユースケース
議論から明らかになったのは、ハッシュ関数の選択は特定のユースケースに合わせるべきだということです。小さなキーを持つ辞書検索やハッシュテーブルでは、 rapidhash が現在のリーダーであるようです。しかし、キーのプロパティが事前によく知られている特殊なアプリケーションでは、カスタム設計されたハッシュ関数がさらに良いパフォーマンスを提供する可能性があります。
レイテンシに最適化されたアルゴリズム( rapidhash など)とスループットに最適化された代替手段の間のクロスオーバーポイントは、最新のサーバーハードウェアでは約400〜500バイト付近です。このしきい値より大きなキーでは、他のソリューションがより適切かもしれません。
注目すべきは、非暗号化ハッシュ関数の分野が近年急速に進化していることです。10年前に最先端と考えられていた関数は、今日の基準では壊れていると見なされています。この急速な進歩により、汎用ハッシュ関数として受け入れられるものの基準が大幅に引き上げられました。
ハッシュテーブルや辞書を含むパフォーマンスクリティカルなアプリケーションに取り組む開発者にとって、 rapidhash はコードサイズ、速度、品質のバランスを取る魅力的な選択肢です。最小限のレイテンシで小さなキーを処理しながら高品質の分散特性を維持する能力は、現代のソフトウェア開発において特に価値があります。
参考: rapidhash - Very fast, high quality, platform-independent