- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
MemoryPool 和有什么区别和 ArrayPool据我所知,他们都做同样的事情(出租缓冲区以减少垃圾收集压力)。
在读取调用中是否应该首选使用池 NetworkStream
或 WebSocket
?
最佳答案
ArrayPool<T>
类出租数组。换句话说,Rent
方法返回 T[]
. Shared
属性返回 ArrayPool<T>
的默认实现, TlsOverPerCoreLockedStacksArrayPool
它以 ThreadStatic
的组合缓存后备数组存储桶数组和本地每核“堆栈”。它针对 char
进行了优化和 byte
案件。 ConfigurableArrayPool
从 Create
返回方法将底层数组存储在 Buckets
的数组中(每个都有自己的数组数组)。此外,您可以编写自己的实现。
另一方面,MemoryPool<T>
更通用一点,因为它最终处理 Memory<T>
对象。 Rent
方法分发IMemoryOwner<T>
实现,它们负责拥有一个 Memory<T>
.内存所有者可以得到各种来源的支持,数组就是其中之一。 MemoryPool<T>.Shared
单例实际上是一个 ArrayMemoryPool<T>
你猜对了,这是由 ArrayPool<T>.Shared
支持的.但是内存池可能由不同的来源支持,例如由 SafeHandle
指向的非托管内存/内存。 .
使用哪一个实际上取决于您的要求:
T[]
或者你只是想要一个无分配数组,然后 ArrayPool<T>
是你想要使用的。 Memory<T>
实例,那么您想使用 MemoryPool<T>
T[]
一起工作得更好与
Memory<T>
相比(反之亦然),但 API 应该只关心内存本身,而不知道它来自的池。
关于c# - MemoryPool<T> 和 ArrayPool<T> 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61856306/
将 ArrayPool 与引用类型一起使用的正确方法是什么? 我假设它会充满刚刚使用默认构造函数“更新”的对象。 例如,在下面的代码中,当您第一次从 ArrayPool 中租用时,所有的 Foobar
我有以下基准测试,它使用堆栈分配、堆分配和 ArrayPool 分配从文件中读取字符串。 我希望堆栈分配是最快的,因为它只是堆栈指针增量,但根据基准 ArrayPool 稍微快一点。 怎么可能? st
是否可以重新使用在字符串到字节数组转换中使用的内存? 应用程序必须以 60fps 的速度通过网络发送大字符串。这似乎给 GC 带来了太大的压力。那么是否有可能以某种方式重新使用由字符串转换创建的字节数
从 .net RC2 升级到 RTM 后,我发现我需要为派生自 ArrayPool 的 JsonOutputFormatter 的构造函数提供一个参数。我如何获得这个对象?我正在手动更新 JsonOu
我刚刚发现 ArrayPool 的存在,但它的文档有点缺乏。 我想知道 Rent(.)和 Return(.)是线程安全的。 编辑:看起来我没有注意到文档的“线程安全”部分;但阅读了一些评论和答案后,我
MemoryPool 和有什么区别和 ArrayPool据我所知,他们都做同样的事情(出租缓冲区以减少垃圾收集压力)。 在读取调用中是否应该首选使用池 NetworkStream 或 WebSocke
在什么情况下我们应该更喜欢其中一种?看起来像 BufferManager对于汇集大量内存来说不是最佳选择。是真的吗? ArrayPool Class 最佳答案 BufferManager 仅适用于缓冲
我是一名优秀的程序员,十分优秀!