考虑到元素数量将小于 500,从字符串切片中删除是否比具有虚拟值的字符串映射更快

Is deletion from slice of strings is faster than map of string with dummy values considering number of elements will be less than 500

我将从框架中一个接一个地接收字符串,我需要将它们保存在某个容器中并稍后删除其中的一些。现在我有两个选择:-

  1. 创建一段字符串,然后通过查找删除一些项目
  2. 使用 key=string 和 data=dummy 数据创建一个字符串映射,以便于删除

所以我个人更喜欢第二种选择。那是正确的选择吗?我们有什么更好的方法吗?

如果您需要按值访问和删除字符串,那么 map[string]struct{} 会提供更好的性能,前提是字符串的数量足够大并且没有重复项。如果有重复项,当你删除时你只需要删除一个,那么 map[string]int 就可以了,值是字符串出现的次数。如果字符串的数量不大,那么 container/list 可能比切片更好,因为您可以在常数时间内从中删除字符串。切片仅在小尺寸时优于其他切片,对于所有实际情况,删除都需要复制部分切片。