タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

algorithmとhashに関するemonkakのブックマーク (5)

  • Swisstable Hash に使われているビット演算の魔術 - methaneのブログ

    Googleが開発したSwisstableと呼ばれるハッシュテーブル実装がAbseilとして公開されて、Rustの標準のHashMap実装にもその移植であるhashbrownが採用されました。 Swisstable の面白いところは、8または16要素をグループ化して、グループ内の各要素のハッシュ値のうち7bitをそれぞれ1byteに格納した8または16バイトの配列を作り、その配列に対して一気に並列でマッチングを行うことです。 この並列マッチングにはSSE2もしくはビット演算が使われます。この記事ではこの並列マッチング部分について解説します。 SSE2を使う場合 SSE2を使う場合は、グループのサイズは16になります。ハッシュ値を格納する配列のことを control と呼ぶことにすると、 control は char control[16] になります。control の各バイトの状態は次の

    Swisstable Hash に使われているビット演算の魔術 - methaneのブログ
  • abseil / Swiss Tables and <code>absl::Hash</code>

    By Sam Benzaquen, Alkis Evlogimenos, Matt Kulukundis, and Roman Perepelitsa We are extremely pleased to announce the availability of the new “Swiss Table” family of hashtables in Abseil and the absl::Hash hashing framework that allows easy extensibility for user defined types. Last year at CppCon, We presented a talk on a new hashtable that we were rolling out across Google’s codebase. When asked

  • 私が書いた最速のハッシュテーブル – PART 2 | POSTD

    素数か2のべき乗か ハッシュテーブルのアイテムをルックアップする際に高負荷なステップが3つあります。 キーをハッシングする キーをスロットにマッピングする 該当スロットのメモリをフェッチする ステップ1は、キーが整数であれば、低負荷になります。単にintをsize_tにキャストするだけです。しかし、文字列のようなタイプのキーの場合は高負荷となります。 ステップ2はよくある整数モジュロ演算です。 ステップ3はポインタの間接参照です。std::unordered_mapの場合は複数のポインタ間接参照となります。 処理の遅いハッシュ関数でなければ、直観的にステップ3が最も高負荷になると考えると思います。しかし、全てのルックアップでキャッシュミスが生じなければ、整数モジュロが最も高負荷な処理となります。現代のハードウェアにおいても整数モジュロは非常に遅いのです。 Intelマニュアル では、整数モ

    私が書いた最速のハッシュテーブル – PART 2 | POSTD
  • Jean-Philippe Aumasson

    Cryptographer, co-founder & chief security officer @ Taurus. Books Serious Cryptography (No Starch Press, 2017) Translations' covers 🚧 Second edition: to appear in 2024 (No Starch Press) 🚧 French translation: to appear in 2024 (Dunod) Petit Pingouin (self-published, 2021) Crypto Dictionary (No Starch Press, 2020) The Hash Function BLAKE (Springer, 2014) Crypto projects Hash functions BLAKE, BLAK

  • MurmurHash - Wikipedia

    MurmurHash is a non-cryptographic hash function suitable for general hash-based lookup.[1][2][3] It was created by Austin Appleby in 2008[4] and is currently hosted on GitHub along with its test suite named 'SMHasher'. It also exists in a number of variants,[5] all of which have been released into the public domain. The name comes from two basic operations, multiply (MU) and rotate (R), used in it

  • 1