Я пытаюсь создать буфер в памяти, который я могу использовать для отправки ByteString
s с сервера клиенту через сокет. Я хочу, чтобы он был изменяемым, поэтому я могу использовать его снова.
Причина, по которой я хочу это сделать, заключается в том, что отправка отложенных ByteString
s напрямую приводит к созданию большого количества объектов для каждого ответа сервера и замедляет работу сервера из-за чрезмерного сбора мусора (40% затрачивается в GC). *
Я искал IOUArray
, но это будет работать только для Int
, Word32
и тому подобное, но не для ByteString
.
Другой вариант, который я рассматриваю, заключается в создании Array Int (IORef ByteString)
- каждая строка ByteString должна иметь одинаковый размер, но я не уверен, что это правильный путь.
Я просмотрел множество документов в Интернете, но они либо адресованы IOArray
или IORef
, но никогда не были массивом ByteStrings.
Я очень ценю любые указания, как это сделать или где искать дополнительную информацию.