我经常使用结构片。这是此类结构的示例:
type MyStruct struct { val1, val2, val3 int text1, text2, text3 string list []SomeType}
所以我定义我的切片如下:
[]MyStruct
假设我有大约一百万个元素,并且我正在大量使用切片:
我经常添加新元素。(元素总数未知。)
我时不时地整理一下。
我还删除了元素(虽然没有添加新元素那么多)。
我经常阅读元素并将它们传递(作为函数参数)。
元素本身的内容不会改变。
我的理解是,这会导致对实际结构的大量改组。另一种方法是创建一个指向结构的指针:
[]*MyStruct
现在结构体保持原样,我们只处理我认为占用空间较小的指针,因此会使我的操作更快。但是现在我给垃圾收集器做更多的工作。
你能提供什么时候直接使用结构体还是什么时候使用指向结构体的指针的一般指南吗?
我是否应该担心留给 GC 的工作量是多少?
复制结构与复制指针的性能开销可以忽略不计?
也许一百万个元素并不多。当切片变得更大(但仍然适合 RAM,当然)时,所有这些如何变化?
料青山看我应如是
相关分类