fast IO in ghc

Simon Marlow simonmar@microsoft.com
Wed, 3 Apr 2002 10:51:44 +0100


> I tend to deal a lot with very very large data files in Haskell and my
> current approach to dealing with getting data out of one=20
> program an into
> another is writing it to a file using 'show' and then reading=20
> it in using
> 'read'.  Unfortunately, this is very slow and produces very=20
> large files
> which are very slow to read and write.  Is there another=20
> option?  I don't
> care about H98 compatibility, so if there's a way to somehow just dump
> ghc's internal representation (I also don't care about=20
> x-platformness) to
> a file and read it back, that would be excellent.  Other=20
> suggestions are
> welcome too :).

I wrote a binary I/O library recently for GHC, which we're using to
speed up interface file reading and writing.  The library is similar to
nhc98's Binary library, execept that it works in terms of bytes rather
than bits, and we don't do lazy binary I/O in the same way.

It currently has some GHC-specific stuff in it, but I plan to make a
generic version for the libraries at some point.  For the time being,
you can pull it out of CVS and take a look - it's in
ghc/utils/Binary.hs.  It should work if you remove the GHC-specific
bits.

Cheers,
	Simon