[Haskell-cafe] Data.Binary suboptimal instance

Khudyakov Alexey alexey.skladnoy at gmail.com
Sat May 23 13:03:56 EDT 2009


On Saturday 23 May 2009 20:00:25 Henning Thielemann wrote:
> I think the list should be avoided at all costs, because it is so slow.
> I don't know if it is fused away by clever optimizer rules in the binary
> package. Anyway, you can treat a Builder like a list. Just replace (++)
> by 'mappend' and [] by 'mempty'.
>
> It should work like this:
>
>    do a <- getWord8
>       b <- getWord8
>       return $ Builder.singleton a `mappend` Builder.singleton b
>

It worked for me pretty well. Profiling shown that in my program 
{get,put}Stream functions takes less than 1% of execution time.
I don't know which tricks ghc used. 

I think code with list is more clear. Another problem that you can't use 
existing Binary instances with Builder.

--
  Best regards Khudyakov Alexey


More information about the Haskell-Cafe mailing list