[Haskell-cafe] cereal vs. binary

Don Stewart dons at galois.com
Sat Jul 3 13:10:02 EDT 2010


deliverable:
> I dump results of a computation as a Data.Trie of [(Int,Float)].  It
> contains about 5 million entries, with the lists of 35 or less pairs
> each.  It takes 8 minutes to load with Data.Binary and lookup a single
> key.  What can take so long?  If I change from compressed to
> uncompressed (and then decode), it's the same time...  It's not IO,
> CPU is loaded 100%.
> 
> I'm now thinking of using cereal.  Given I have Data.Binary in place,
> what needs to be changed to work with cereal?  Is it binary-
> compatible?  How can one construct a cereal instance for Data.Trie?

cereal and binary are almost identical, one will load from a single
strict bytestring, one will load from a chunk of strict bytestrings. 

I'd imagine that constructing your list is the problem, not the parsing
part. Do some profiling, since I'm doubtful switching to cereal will
make much of a difference.

-- Don


More information about the Haskell-Cafe mailing list