ImmutableArray<T> 和 ImmutableList <T>之间的区别



ImmutableArray<T>ImmutableList<T>之间有什么区别,在哪里使用它们最好?

这里有一些阅读可能有助于解释:欢迎ImmutableArray

节选:

使用不可变数组的原因:

  • 很少更新数据或元素数量很少(<16)
  • 你需要能够遍历性能关键区的数据
  • 你有很多不可变集合的实例,你不能把数据保存在树中

使用不可变列表的原因:

  • 更新数据是常见的,或者元素的数量预计不会很小
  • 更新集合比迭代内容对性能的影响更大

我想你是在问在哪里使用它们。欢迎ImmutableArray的帮助。总而言之,使用不可变数组时:

  • 很少更新数据或元素数量很少(<16)
  • 你需要能够遍历性能关键区的数据
  • 你有很多不可变集合的实例,你不能把数据保存在树中

使用不可变列表

  • 更新数据是常见的,或者元素的数量预计不会很小
  • 更新集合比迭代内容对性能的影响更大

主要区别在于ImmutableArray只是普通数组的包装器,这意味着在数组中检索元素非常快。

一个ImmutableArray也是一个结构体,这意味着它是一个值类型,所以它占用的空间比不可变列表(一个引用类型)少。

由于这些原因,如果您很少需要更新它的数据,或者元素数量很少(小于16),或者在集合上迭代的性能很重要,则适合使用ImmutableArray

如果您的需求与上述原因不匹配,您应该使用ImmutableList

查看这里的文档

根据博客文章"Please welcome ImmutableArray"(其他人都在引用同一篇博客文章),差异是…

ImmutableArray:

  • 简单实现(只是一个数组)
  • 没有优化快速更新大型集合(整个数组需要复制)。
  • 对于大多数用例更有效(任何涉及更新大型集合)。

ImmutableList:

  • 更复杂的实现(涉及树)。
  • 是为快速更新大型集合而优化的(它可以在对数时间内完成)。
  • 大多数用例效率较低。

所以如果你没有更新太多,或者你的集合很小,使用ImmutableArray。如果你要经常更新大型集合,你需要使用ImmutableList .

相关内容

  • 没有找到相关文章

最新更新