Joh*_*hnD 4 c# immutablelist immutable-collections
我有一段代码经常迭代一个小列表.鉴于列表在运行时期间永远不会更改,我将实现替换为ImmutableList<T>.通过dotTrace查看性能跟踪,这比正常情况要糟糕得多List<T>:
(List<T>左,ImmutableList<T>右)
为什么会发生这种情况并且有解决方法?
Joh*_*hnD 10
与List<T>根据需要调整大小的数组包装不同,ImmutableList<T>内部使用不可变的AVL树(请参阅Channel9视频讨论此内容).
从.NET Framework博客文章中引用有关Immutable Collections的信息
使用不可变数组的原因:
- 更新数据很少或元素数量很少(<16)
- 您需要能够在性能关键部分中迭代数据
- 你有许多不可变集合的实例,你无法负担将数据保存在树中
坚持使用不可变列表的原因:
- 更新数据很常见,或者元素数量预计不会很小
- 更新集合比迭代内容更具性能要求
| 归档时间: |
|
| 查看次数: |
1500 次 |
| 最近记录: |