Collections.Pooled 项目推荐
项目基础介绍和主要编程语言
Collections.Pooled 是一个基于 .NET 平台的开源项目,主要使用 C# 编程语言。该项目旨在提供高性能、低内存分配的集合类库,适用于 .NET Standard 2.0 和 .NET Core 2.1+ 环境。通过利用 System.Span<T> 和 System.Buffers.ArrayPool<T> 等现代 API,Collections.Pooled 在内存管理和性能优化方面表现出色。
项目核心功能
Collections.Pooled 提供了对常见集合类(如 List<T>、Dictionary<TKey, TValue>、HashSet<T>、Stack<T> 和 Queue<T>)的优化实现。这些实现通过使用 ArrayPool 来减少内存分配,并通过 Span<T> 来提高数据访问的效率。以下是一些核心功能:
- PooledList: 基于
List<T>的优化实现,使用ArrayPool进行内部数组存储分配,并支持Span<T>。提供了TryFind和TryFindLast等新方法,以及Span属性用于快速访问内部数据。 - PooledDictionary<TKey, TValue>: 基于
Dictionary<TKey, TValue>的优化实现,使用ArrayPool进行内部存储分配,并支持Span<T>。新增了AddRange、GetOrAdd和AddOrUpdate等方法,显著减少了大量添加项目时的内存分配。 - PooledSet: 基于
HashSet<T>的优化实现,使用ArrayPool进行内部存储分配,并支持ReadOnlySpan<T>。在几乎所有情况下都比HashSet<T>性能更好,特别是在内部数组需要调整大小时。 - PooledStack: 基于
Stack<T>的优化实现,使用ArrayPool进行内部存储分配。除了支持Span<T>的构造函数外,还新增了RemoveWhere方法。
项目最近更新的功能
Collections.Pooled 最近更新的功能包括:
- PooledList 的优化: 进一步优化了
PooledList<T>的性能,特别是在使用Span<T>进行数据访问时。新增了AddSpan和InsertSpan方法,允许直接将数据写入内部存储,减少了中间步骤的内存分配。 - PooledDictionary<TKey, TValue> 的扩展: 新增了
GetOrAdd和AddOrUpdate方法,提供了更灵活的键值对操作。同时,优化了AddRange方法的实现,减少了大量数据添加时的内存分配。 - PooledSet 的性能提升: 通过进一步优化内部数组的分配和释放机制,
PooledSet<T>在处理大量数据时的性能得到了显著提升。新增了对ReadOnlySpan<T>的支持,使得集合操作更加高效。 - PooledStack 的新功能: 新增了
RemoveWhere方法,允许用户根据条件从栈中移除元素。同时,优化了Push和Pop操作的内存分配,减少了不必要的开销。
Collections.Pooled 项目通过持续的优化和功能扩展,为 .NET 开发者提供了高性能、低内存占用的集合类库,适用于各种高性能计算和内存敏感的应用场景。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



