소켓을 통해 서버에서 클라이언트로 ByteString
을 보내기 위해 사용할 수있는 버퍼를 메모리에 만들려고합니다. 나는 그것을 변경할 수 있기를 바란다. 그래서 그것을 재사용 할 수있다.Haskell에서 ByteString을 보관할 버퍼를 만드는 올바른 방법은 무엇입니까
이유는 내가 게으른 ByteString
보내기 때문에 모든 서버 응답에 대해 많은 개체가 만들어지고 과도한 가비지 수집 (GC에서 40 % 소요)으로 인해 서버가 느려지 기 때문입니다.
나는 IOUArray
을 조사하고 있었지만, Int
, Word32
등과 같은 경우에만 작동하지만 ByteString
에는 작동하지 않습니다.
내가 찾고있는 다른 옵션은 Array Int (IORef ByteString)
을 만드는 것입니다. 각 ByteString은 같은 크기 여야하지만, 이것이 올바른 방법인지 확실하지 않습니다.
많은 문서를 온라인에서 살펴 보았지만 IOArray
또는 IORef
을 주소 지정했지만 결코 바이트 문자열의 배열을 지정하지 않았습니다.
나는 이것에 대해 어떻게 가야하는지, 또는 더 많은 정보를 구할 수있는 방법에 대해 많은 조언을드립니다.