4

key:valueストアを使用し、Perlで衝突不可能なハッシュを作成したいと思います。Perlモジュール、または衝突不可能なハッシュ関数またはテーブル(おそらくgperfのようなもの)を生成するために使用できる関数はありますか?入力値の範囲はすでにわかっています。

4

2 に答える 2

4

純粋な Perl ソリューションを見つけることができません。最も近いのは、型システムで完全なハッシュを使用する Reini Urban の調査です。XS でやるとしたら、gperf よりもCMPH (C Minimal Perfect Hashing Library)の方が適しているかもしれません。CMPH は、重要な鍵のサイズと実行時の生成用に最適化されているようです。

Perl で実行時に完全なハッシュ関数を生成するコストは、それを使用する価値を圧倒する可能性があります。メリットを得るには、コンパイルしてキャッシュする必要があります。繰り返しになりますが、XS コンパイル時に固定キー リストから関数を生成する XS モジュールを作成するのが最善の方法かもしれません。

好奇心から、データの大きさとセットに含まれるキーの数は?

于 2011-10-21T01:48:02.103 に答える
4

ジュディに興味があるかもしれません。これはハッシュ テーブルの実装ではありませんが、おそらく非常に効率的な連想配列の実装です。

Perl のハッシュは非常によく調整されており、バケットが大きくなり始めると自動的に再ハッシュされます。

于 2011-10-21T01:56:32.360 に答える