zcache

package
v0.0.0-...-9d1b792 Latest Latest
Warning

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

Go to latest
Published: Aug 24, 2022 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Overview

FAST CACHE < KEY : VALUE > : Superfast

FAST CACHE < KEY : VALUE > : Superfast

Copyright 2016 The Go Authors. All rights reserved. Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type MapOf

type MapOf[K comparable, V any] struct {
	// contains filtered or unexported fields
}

MapOf is like a Go map[interface{}]interface{} but is safe for concurrent use by multiple goroutines without additional locking or coordination. Loads, stores, and deletes run in amortized constant time.

The MapOf type is specialized. Most code should use a plain Go map instead, with separate locking or coordination, for better type safety and to make it easier to maintain other invariants along with the map content.

The MapOf type is optimized for two common use cases: (1) when the entry for a given key is only ever written once but read many times, as in caches that only grow, or (2) when multiple goroutines read, write, and overwrite entries for disjoint sets of keys. In these two cases, use of a MapOf may significantly reduce lock contention compared to a Go map paired with a separate Mutex or RWMutex.

The zero MapOf is empty and ready for use. A MapOf must not be copied after first use.

func (*MapOf[K, V]) Delete

func (m *MapOf[K, V]) Delete(key K)

Delete deletes the value for a key.

func (*MapOf[K, V]) Load

func (m *MapOf[K, V]) Load(key K) (value V, ok bool)

Load returns the value stored in the map for a key, or nil if no value is present. The ok result indicates whether value was found in the map.

func (*MapOf[K, V]) LoadOrStore

func (m *MapOf[K, V]) LoadOrStore(key K, value V) (actual V, loaded bool)

LoadOrStore returns the existing value for the key if present. Otherwise, it stores and returns the given value. The loaded result is true if the value was loaded, false if stored.

func (*MapOf[K, V]) Range

func (m *MapOf[K, V]) Range(f func(key K, value V) bool)

Range calls f sequentially for each key and value present in the map. If f returns false, range stops the iteration.

Range does not necessarily correspond to any consistent snapshot of the MapOf's contents: no key will be visited more than once, but if the value for any key is stored or deleted concurrently, Range may reflect any mapping for that key from any point during the Range call.

Range may be O(N) with the number of elements in the map even if f returns false after a constant number of calls.

func (*MapOf[K, V]) Store

func (m *MapOf[K, V]) Store(key K, value V)

Store sets the value for a key.

type Uint32

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

Uint32 calculates division by using a pre-computed inverse.

func NewUint32

func NewUint32(d uint32) Uint32

NewUint32 initializes a new pre-computed inverse for d != 0. If d == 0, a runtime divide-by-zero panic is raised.

func (Uint32) Div

func (d Uint32) Div(n uint32) uint32

Div calculates n / d using the pre-computed inverse. Note must have d > 1.

func (Uint32) DivMod

func (d Uint32) DivMod(n uint32) (uint32, uint32)

DivMod calculates n / d and n % d using the pre-computed inverse. Note must have d > 1.

func (Uint32) Divisible

func (d Uint32) Divisible(n uint32) bool

Divisible determines whether n is exactly divisible by d using the pre-computed inverse.

func (Uint32) Mod

func (d Uint32) Mod(n uint32) uint32

Mod calculates n % d using the pre-computed inverse.

type ZCache

type ZCache struct {
	M      [mapSize]interface{}
	MFlag  [mapSize]bool
	MBack  *MapOf[string, interface{}]
	MEmpty interface{}
}

ZCache General Type

func New

func New() (tr *ZCache)

func ZCacheCreate

func ZCacheCreate() (tr *ZCache)

func (*ZCache) Get

func (tr *ZCache) Get(name string) (result interface{})

func (*ZCache) Set

func (tr *ZCache) Set(name string, item interface{}) bool

type ZCacheInt

type ZCacheInt struct {
	M      [mapSize]int
	MFlag  [mapSize]int
	MBack  *MapOf[string, int]
	MEmpty int
}

ZCache Int Type

func ZCacheIntCreate

func ZCacheIntCreate() (tr *ZCacheInt)

func (*ZCacheInt) Get

func (tr *ZCacheInt) Get(name string) (result int)

func (*ZCacheInt) Set

func (tr *ZCacheInt) Set(name string, item int)

type ZCacheString

type ZCacheString struct {
	M      [mapSize]string
	MFlag  [mapSize]int
	MBack  *MapOf[string, string]
	MEmpty string
}

ZCache String Type

func ZCacheStringCreate

func ZCacheStringCreate() (tr *ZCacheString)

func (*ZCacheString) Get

func (tr *ZCacheString) Get(name string) (result string)

func (*ZCacheString) Set

func (tr *ZCacheString) Set(name string, item string)

Jump to

Keyboard shortcuts

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