Как рассчитать объем памяти сложной карты переменных - PullRequest
0 голосов
/ 25 сентября 2019

Я пытаюсь вычислить размер переменной (EntryMap) в памяти.

type Entry interface {
    A() string
    B() string
    C() time.Time
    D() int64
}

type Entries []Entry
type EntryMap map[string]Entries

Что я получил до сих пор это:

hm = make(EntryMap)
SizeInMem = 8 //Length of Empty HMap

for key, value := range hm {
    A = 8 // For each Key Value Assignment
    B = len(Key) + 1 // Size of key string var
    C = len(Entries) * unsafe.Sizeof(Entry) // Size of Entry object * len of slice
    SizeInMem += A+B+C
}

fmt.Println("Size in Memory &v", SizeInMem)

Это правильный путьопределить размер переменной в памяти?

1 Ответ

0 голосов
/ 25 сентября 2019

Это не то, что вы можете рассчитать как раз вовремя ...

Но я подготовил для вас тестовую площадку.

https://play.golang.org/p/V_2fheWHQn-


type Entry interface {
    A() string
    B() string
    D() int64
}

type Entries []Entry
type EntryMap map[string]Entries

func main() {

    size := memcalc(func() {
        /* Put your code here */
        var hm = make(EntryMap)

        // do something with map, grow, for example        

        // pass variable to this function to measure
        calc(hm)
    })

    fmt.Println(size)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...