.NET中Collections.Pooled性能优化推荐做法有哪些补充说明?

2026-05-05 17:380阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计4193个文字,预计阅读时间需要17分钟。

.NET中Collections.Pooled性能优化推荐做法有哪些补充说明?

简介:本文介绍了.NET性能优化,并推荐使用Collections.Pooled。在文中,提到了使用Pooled类型的各种好处,但也提到了群内对其实际应用中存在的一些疑问。

简介

在上一篇.NET性能优化-推荐使用Collections.Pooled一文中,提到了使用Pooled类型的各种好处,但是在群里也有小伙伴讨论了很多,提出了很多使用上的疑问。
所以特此写了这篇文章,补充回答小伙伴们问到的一些问题,和遇到某些场景如何处理。

问题分析

以下就是这两天收集到比较常见的问题,我都收集到一起,统一给大家回复一下。

ArrayPool会不会无限扩大?

遇到的第一个问题就是我们Pooled类型依赖于ArrayPool进行底层数组的分配,那么我们一直使用Pooled类型会不会导致ArrayPool无限制的扩大下去?
回答:不会无限制的扩大,ArrayPool在.NET BCL库中有两种实现:

  • 一种是调用ArrayPool<T>.Shared的使用Thread-local storage方式实现的池,名称叫做TlsOverPerCoreLockedStacksArrayPool,这种池的话通过核心隔离使得在并发情况下的性能非常好,如果后面又时间我会出一篇源码解析的文章,它里面会限制池中对象最大的数量。
阅读全文

本文共计4193个文字,预计阅读时间需要17分钟。

.NET中Collections.Pooled性能优化推荐做法有哪些补充说明?

简介:本文介绍了.NET性能优化,并推荐使用Collections.Pooled。在文中,提到了使用Pooled类型的各种好处,但也提到了群内对其实际应用中存在的一些疑问。

简介

在上一篇.NET性能优化-推荐使用Collections.Pooled一文中,提到了使用Pooled类型的各种好处,但是在群里也有小伙伴讨论了很多,提出了很多使用上的疑问。
所以特此写了这篇文章,补充回答小伙伴们问到的一些问题,和遇到某些场景如何处理。

问题分析

以下就是这两天收集到比较常见的问题,我都收集到一起,统一给大家回复一下。

ArrayPool会不会无限扩大?

遇到的第一个问题就是我们Pooled类型依赖于ArrayPool进行底层数组的分配,那么我们一直使用Pooled类型会不会导致ArrayPool无限制的扩大下去?
回答:不会无限制的扩大,ArrayPool在.NET BCL库中有两种实现:

  • 一种是调用ArrayPool<T>.Shared的使用Thread-local storage方式实现的池,名称叫做TlsOverPerCoreLockedStacksArrayPool,这种池的话通过核心隔离使得在并发情况下的性能非常好,如果后面又时间我会出一篇源码解析的文章,它里面会限制池中对象最大的数量。
阅读全文