[Haskell-cafe] Re: haskell crypto is reaaaaaaaaaally slow

apfelmus apfelmus at quantentunnel.de
Thu Jun 21 05:25:46 EDT 2007


Anatoly Yakovenko wrote:
> I don't think the problem with performance of crypto has anything to
> do with unpacking ByteStrings. If I unpack the bytestrings first, then
> run the hash, and just time the hash algorithm, i still get 4 seconds
> with crypto where the C implementation gives me 0.02 seconds.  Thats
> 200 times slower in haskell, to me it just seems like a bad
> implementation.  You should be able to stay within an order of
> magnitude from C with haskell without resorting to weird compiler
> tricks.

Anatoly, the idea to unpack is the problem. You have to operate directly
on the ByteString to get decent performance, for instance with a fold.
Compare

 import Data.ByteString.Lazy as BS

   -- very slow
 checksum  = foldl' xor 0 . BS.unpack

   -- blazingly fast
 checksum' = BS.foldl' xor 0

Regards,
apfelmus



More information about the Haskell-Cafe mailing list