mph

package module
v0.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 16, 2022 License: MIT Imports: 3 Imported by: 0

README

mph

Go Reference

mph is a Go package for that implements a minimal perfect hash table over strings. It uses the "Hash, displace, and compress" algorithm and the xxh3 hash function.

Some quick benchmark results (this is on an Intel(R) Xeon(R) CPU @ 2.80GHz):

  • Build constructs a minimal perfect hash table from a 350k word dictionary in 100ms (construction time is linear in the size of the input).
  • Lookups on that dictionary take about 30ns and are 50% faster than a map[string]uint32:
name      time/op
Build      101ms ± 3%
Table     28.1ns ± 2%
TableMap  63.9ns ± 3%

Documentation

Overview

Package mph implements a minimal perfect hash table over strings.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Table

type Table struct {
	// contains filtered or unexported fields
}

A Table is an immutable hash table that provides constant-time lookups of key indices using a minimal perfect hash.

func Build

func Build(keys []string) *Table

Build builds a Table from keys using the "Hash, displace, and compress" algorithm described in http://cmph.sourceforge.net/papers/esa09.pdf.

func (*Table) Lookup

func (t *Table) Lookup(s string) (n uint32, ok bool)

Lookup searches for s in t and returns its index and whether it was found.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL