.NET中Collections.Pooled性能优化推荐做法有哪些补充说明?
- 内容介绍
- 文章标签
- 相关推荐
本文共计4193个文字,预计阅读时间需要17分钟。
简介:本文介绍了.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。在文中,提到了使用Pooled类型的各种好处,但也提到了群内对其实际应用中存在的一些疑问。
简介在上一篇.NET性能优化-推荐使用Collections.Pooled一文中,提到了使用Pooled类型的各种好处,但是在群里也有小伙伴讨论了很多,提出了很多使用上的疑问。
所以特此写了这篇文章,补充回答小伙伴们问到的一些问题,和遇到某些场景如何处理。
以下就是这两天收集到比较常见的问题,我都收集到一起,统一给大家回复一下。
ArrayPool会不会无限扩大?遇到的第一个问题就是我们Pooled类型依赖于ArrayPool进行底层数组的分配,那么我们一直使用Pooled类型会不会导致ArrayPool无限制的扩大下去?
回答:不会无限制的扩大,ArrayPool在.NET BCL库中有两种实现:
- 一种是调用
ArrayPool<T>.Shared的使用Thread-local storage方式实现的池,名称叫做TlsOverPerCoreLockedStacksArrayPool,这种池的话通过核心隔离使得在并发情况下的性能非常好,如果后面又时间我会出一篇源码解析的文章,它里面会限制池中对象最大的数量。

