[Haskell-cafe] Re: Climbing up the shootout...
simonmarhaskell at gmail.com
Fri Sep 26 12:01:12 EDT 2008
Manlio Perillo wrote:
> Simon Marlow ha scritto:
>> Manlio Perillo wrote:
>> We'd certainly support any efforts to add support for a more modern
>> I/O multiplexing or asynchronous I/O back-end to the IO library. It's
>> not too difficult, because the interface between the low-level I/O
>> supplier and the rest of the IO library is rather small - just a few
>> functions that read and write blocks of data in a blocking or
>> non-blocking way. The blocking variants currently communicate with the
>> I/O manager thread which does select() on behalf of the clients.
> There is some documentation that summarize the current status, and how
> all fits together?
Sadly no, but the code is mostly restricted to a couple of modules
(GHC.Handle and GHC.Conc).
> There are some benchmarks that tell you the use of a separate I/O
> manager thread is a good solution?
Compared to what? I did measure the difference between doing this in
Haskell code in the IO library (as with -threaded) against doing it in
the RTS (without -threaded), and the Haskell version won hands down,
mainly because it only re-initiates the select() when it has to change
the file handles in the set. Using epoll() instead of select() should
be even better.
More information about the Haskell-Cafe