hack

package
v0.0.0-...-503c688 Latest Latest
Warning

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

Go to latest
Published: Nov 8, 2023 License: Apache-2.0 Imports: 2 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// LoadFactorNum is the numerator of load factor
	LoadFactorNum = 13
	// LoadFactorDen is the denominator of load factor
	LoadFactorDen = 2
)

LoadFactor is the maximum average load of a bucket that triggers growth is 6.5 in Golang Map. Represent as LoadFactorNum/LoadFactorDen, to allow integer math. They are from the golang definition. ref: https://github.com/golang/go/blob/go1.13.15/src/runtime/map.go#L68-L71

View Source
const (
	// DefBucketMemoryUsageForMapStrToSlice = bucketSize*(1+unsafe.Sizeof(string) + unsafe.Sizeof(slice))+2*ptrSize
	// ref https://github.com/golang/go/blob/go1.15.6/src/reflect/type.go#L2162.
	// The bucket size may be changed by golang implement in the future.
	// Golang Map needs to acquire double the memory when expanding,
	// and the old buckets will be released after the data is migrated.
	// Considering the worst case, the data in the old bucket cannot be migrated in time, and the old bucket cannot
	// be GCed, we expand the bucket size to 1.5 times to estimate the memory usage of Golang Map.
	DefBucketMemoryUsageForMapStrToSlice = (8*(1+16+24) + 16) / 2 * 3
	// DefBucketMemoryUsageForMapIntToPtr = bucketSize*(1+unsafe.Sizeof(uint64) + unsafe.Sizeof(pointer))+2*ptrSize
	DefBucketMemoryUsageForMapIntToPtr = (8*(1+8+8) + 16) / 2 * 3
	// DefBucketMemoryUsageForMapStringToAny = bucketSize*(1+unsafe.Sizeof(string) + unsafe.Sizeof(interface{}))+2*ptrSize
	DefBucketMemoryUsageForMapStringToAny = (8*(1+16+16) + 16) / 2 * 3
	// DefBucketMemoryUsageForSetString = bucketSize*(1+unsafe.Sizeof(string) + unsafe.Sizeof(struct{}))+2*ptrSize
	DefBucketMemoryUsageForSetString = (8*(1+16+0) + 16) / 2 * 3
	// DefBucketMemoryUsageForSetFloat64 = bucketSize*(1+unsafe.Sizeof(float64) + unsafe.Sizeof(struct{}))+2*ptrSize
	DefBucketMemoryUsageForSetFloat64 = (8*(1+8+0) + 16) / 2 * 3
	// DefBucketMemoryUsageForSetInt64 = bucketSize*(1+unsafe.Sizeof(int64) + unsafe.Sizeof(struct{}))+2*ptrSize
	DefBucketMemoryUsageForSetInt64 = (8*(1+8+0) + 16) / 2 * 3
)

Variables

This section is empty.

Functions

func EstimateBucketMemoryUsage

func EstimateBucketMemoryUsage[K comparable, V any]() uint64

EstimateBucketMemoryUsage returns the estimated memory usage of a bucket in a map.

func Slice

func Slice(s string) (b []byte)

Slice converts string to slice without copy. Use at your own risk.

Types

type MutableString

type MutableString string

MutableString can be used as string via string(MutableString) without performance loss.

func String

func String(b []byte) (s MutableString)

String converts slice to MutableString without copy. The MutableString can be converts to string without copy. Use it at your own risk.

Jump to

Keyboard shortcuts

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