У меня есть горячий кодовый путь (100 тыс. Запусков), который необязательно должен заполнить карту некоторыми значениями.
Я пытаюсь оптимизировать его, и одной из вещей, которые могут помочь, будет ленивая инициализация памяти. мой текущий код
mystruct struct {
mymap
}
for i range 10000 {
mystruct = {}
mystruct.mymap = map[string]string
if variable_exists {
mystruct.mymap[variable] = blah
}
}
Затем я использую эту переменную в тонне операторов диапазона, поэтому ее нужно инициализировать.
, но в подавляющем большинстве случаев карта просто пуста так что было бы хорошо, если бы мне не нужно было инициализировать карту, чтобы оставить ее пустой. поэтому я надеюсь что-то вроде
mystruct struct {
mymap
}
default_map = make(map[string]string)
for i range 10000 {
mystruct = {}
mystruct.mymap = default_map
if variable_exists {
if mystruct.mymap == default_map {
mystruct.mymap = make(map[string]string)
}
mystruct.mymap[variable] = blah
}
}
, но это не работает. Я нашел диплоэквивалент, но это было бы слишком медленно. большинство языков позволяют проверять, направлены ли они на один и тот же объект, так как мне это сделать в go?