.net StreamReader.Read(Span< char>)与StreamReader.Read(char[],int,int)性能的比较

fykwrbwg  于 2023-02-20  发布在  .NET
关注(0)|答案(1)|浏览(130)

我尝试用一种非常优化的方式来读取文本文件,现在,我正在查看StreamReader.Read(Span<char>)StreamReader.Read(char[], int, int)
我知道Span<>的设计是为了不分配堆上的数据而提高速度,但是我不明白在这里使用Span<>有什么好处。
不是两个版本都需要把读字符一个一个地复制到我的缓冲区吗?那么Span<>在这里有什么优势吗?

hsgswve4

hsgswve41#

Span在线程的堆栈(see docs)上分配固定大小的内存。但是字符数组(char[])内存放置是一个堆(存储在堆中的数组)。因此,使用Span<char>的好处是分配的堆内存较少。
因为固定长度的Span元素存储在预先分配的堆栈内存中。

相关问题