ImmutableArray<T>
和ImmutableList<T>
之间有什么区别,在哪里使用它们最好?
这里有一些阅读可能有助于解释:欢迎ImmutableArray
节选:
使用不可变数组的原因:
- 很少更新数据或元素数量很少(<16)
- 你需要能够遍历性能关键区的数据
- 你有很多不可变集合的实例,你不能把数据保存在树中
使用不可变列表的原因:
- 更新数据是常见的,或者元素的数量预计不会很小
更新集合比迭代内容对性能的影响更大
我想你是在问在哪里使用它们。欢迎ImmutableArray的帮助。总而言之,使用不可变数组时:
- 很少更新数据或元素数量很少(<16)
- 你需要能够遍历性能关键区的数据
- 你有很多不可变集合的实例,你不能把数据保存在树中
使用不可变列表
- 更新数据是常见的,或者元素的数量预计不会很小
更新集合比迭代内容对性能的影响更大
主要区别在于ImmutableArray
只是普通数组的包装器,这意味着在数组中检索元素非常快。
一个ImmutableArray
也是一个结构体,这意味着它是一个值类型,所以它占用的空间比不可变列表(一个引用类型)少。
由于这些原因,如果您很少需要更新它的数据,或者元素数量很少(小于16),或者在集合上迭代的性能很重要,则适合使用ImmutableArray
。
如果您的需求与上述原因不匹配,您应该使用ImmutableList
。
查看这里的文档
根据博客文章"Please welcome ImmutableArray
ImmutableArray
:
- 简单实现(只是一个数组)
- 没有优化快速更新大型集合(整个数组需要复制)。
- 对于大多数用例更有效(任何不涉及更新大型集合)。
ImmutableList
:
- 更复杂的实现(涉及树)。
- 是为快速更新大型集合而优化的(它可以在对数时间内完成)。
- 大多数用例效率较低。
所以如果你没有更新太多,或者你的集合很小,使用ImmutableArray
。如果你要经常更新大型集合,你需要使用ImmutableList
.