我尝试用一种非常优化的方式来读取文本文件,现在,我正在查看StreamReader.Read(Span<char>)和StreamReader.Read(char[], int, int)。我知道Span<>的设计是为了不分配堆上的数据而提高速度,但是我不明白在这里使用Span<>有什么好处。不是两个版本都需要把读字符一个一个地复制到我的缓冲区吗?那么Span<>在这里有什么优势吗?
StreamReader.Read(Span<char>)
StreamReader.Read(char[], int, int)
Span<>
hsgswve41#
Span在线程的堆栈(see docs)上分配固定大小的内存。但是字符数组(char[])内存放置是一个堆(存储在堆中的数组)。因此,使用Span<char>的好处是分配的堆内存较少。因为固定长度的Span元素存储在预先分配的堆栈内存中。
Span
char[]
Span<char>
1条答案
按热度按时间hsgswve41#
Span
在线程的堆栈(see docs)上分配固定大小的内存。但是字符数组(char[]
)内存放置是一个堆(存储在堆中的数组)。因此,使用Span<char>
的好处是分配的堆内存较少。因为固定长度的Span元素存储在预先分配的堆栈内存中。