Как стать автором
Обновить

Sharing .NET-experience: Streams pooling by using Microsoft.IO.RecyclableMemoryStream

Время на прочтение1 мин
Количество просмотров2.6K

The pooling is the good practice to reuse created resources instead of a new allocation. I found Microsoft.IO.RecyclableMemoryStream package for using memory streams pooling during logging HTTP-requests in my server.

RecyclableMemoryStreamManager _recyclableMemoryStreamManager = new RecyclableMemoryStreamManager();
using var memoryStream = _recyclableMemoryStreamManager.GetStream();
bodyStream.Seek(0, SeekOrigin.Begin);
bodyStream.CopyTo(memoryStream);
memoryStream.Seek(0, SeekOrigin.Begin);
string responseBody;

const int readChunkBufferLength = 4096;
using var textWriter = new StringWriter();

using (var streamReader = new StreamReader(memoryStream))
{
    var readChunk = new char[readChunkBufferLength];
    int readChunkLength;
    do
    {
        readChunkLength = streamReader.ReadBlock(readChunk,
	        0,
	        readChunkBufferLength);
        textWriter.Write(readChunk, 0, readChunkLength);
    }
    while (readChunkLength > 0);
}
bodyStream.Seek(0, SeekOrigin.Begin);
responseBody = textWriter.ToString();

Теги:
Хабы:
Всего голосов 2: ↑1 и ↓10
Комментарии0

Публикации

Истории

Работа

Ближайшие события

Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
OTUS CONF: GameDev
Дата30 мая
Время19:00 – 20:30
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область