Как я могу определить
pipe :: Handle -> Handle -> IO ()
наиболее эффективным способом в Haskell (платформа 2011-04 или ghc 7.4)?
Обновление 1: Как написать прокси с минимальными издержками для localhost:3389 в Haskell?
Обновление 2: Использование системного вызова GNU/Linux `splice` для передачи данных из сокета в сокет с нулевым копированием в Haskell
Использует системный вызов GNU/Linux splice
для конвейерной передачи данных с нулевым копированием между двумя сетевыми сокетами, а также освобождает место для переносимой замены сокета на сокет splice
, написанной на Haskell, которая использует (mallocBytes
, hGetBufSome
и hPutBuf
) одноразовый выделенный буфер пользовательского пространства на протяжении всего цикла передачи данных, избегая крошечных выделений, которые приводят к нагрузке на сборщик мусора повторными вызовами recv
, sendAll
из пакета bytestring
.