mph

package module
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Sep 1, 2021 License: MIT Imports: 3 Imported by: 1

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 Murmur3 hash function.

Some quick benchmark results (this is on an i7-8700K):

  • Build constructs a minimal perfect hash table from a 102k word dictionary in 18ms (construction time is linear in the size of the input).

  • Lookups on that dictionary take about 30ns and are 27% faster than a map[string]uint32:

    BenchmarkTable-12               199293806               29.99 ns/op
    BenchmarkTableMap-12            145449822               40.92 ns/op
    

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