我有一个热代码路径(100k 次运行),可选地需要用一些值填充地图。
我正在尝试对其进行优化,其中可以提供帮助的事情之一是惰性内存初始化。我目前的代码是
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
}
}
但这不起作用。我发现 deepequal 但这太慢了。大多数语言都允许检查它们是否指向同一个对象,那么我该怎么做呢?
子衿沉夜
阿波罗的战车
随时随地看视频慕课网APP
相关分类