Documentation ¶
Index ¶
Constants ¶
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 )
View Source
const (
// 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
Variables ¶
View Source
var LoadFactorNum = 13
LoadFactorNum is the numerator of load factor
Functions ¶
func EstimateBucketMemoryUsage ¶
func EstimateBucketMemoryUsage[K comparable, V any]() uint64
EstimateBucketMemoryUsage returns the estimated memory usage of a bucket in a map.
func GetBytesFromPtr ¶
GetBytesFromPtr return a bytes array from the given ptr and length
Types ¶
type MutableString ¶
type MutableString string
MutableString can be used as string via string(MutableString) without performance loss.
func String ¶
func String(b []byte) MutableString
String converts slice to MutableString without copy. The MutableString can be converts to string without copy. Use it at your own risk.
Click to show internal directories.
Click to hide internal directories.