awkはハッシュマップの競合をどのように処理しますか?

awkはハッシュマップの競合をどのように処理しますか?

別のリンク、パブリックアドレス指定を使用しますかawk、またはハッシュマップで競合を処理する独自の方法がありますか?

同じアルゴリズムを実行しgawkて実装しますか?nawk

ありがとうございます。

ベストアンサー1

確認するhttps://www.gnu.org/software/gawk/manual/gawk.html#Other-Environment-Variables

これは、「gawkの動作方法に影響を与える」2つの環境変数を指定します。 1つの注意点は、これはgawk開発者のテストと調整のためのものであり、変更される可能性があることです。

INT_CHAIN_MAX

これは、gawkが整数でインデックス付けされた配列を管理するためにハッシュチェーンで維持する予定の最大エントリ数を指定します。

STR_CHAIN_MAX

これは、gawkが文字列でインデックス付けされた配列を管理するためにハッシュチェーンで維持する予定の最大エントリ数を指定します。

したがって、gawkは影響を受けるキー全体を単一のハッシュにリンクして、キーハッシュの競合を管理します。

この「max」に達したときにgawkが何をするかは明確ではありません。なぜなら、単一のチェーンを簡単に解析できないからです。 (今は見つかりません)他の資料では、これらの最大値は次のように疑われます。平均配列全体のチェーン長:平均を超えると、より大きな初期ハッシュを割り当てることができ、以前の競合を再割り当てしてからすべてのチェーンを再構築します。

また、「すべての配列インデックスは文字列です」ということも知っておいてください。さらに、小さい整数で索引付けされた配列を繰り返すことは、数字の順序で繰り返されます(最大数千桁まで)。 Gawkは予想以上に啓発的かもしれません。たとえば、各配列を小さな整数の直接インデックス検索と他の文字列のハッシュとして保持できます。

おすすめ記事