stefanor: > On Wed, Jun 20, 2007 at 01:24:00PM +1000, Donald Bruce Stewart wrote: > > aeyakovenko: > > > $ time ./md5sum ./md5sum > > > [105,252,52,138,187,192,216,17,225,123,185,3,124,101,86,132] > > > > > > real 0m4.790s > > > user 0m3.688s > > > sys 0m0.492s > > > > > > $ time md5sum ./md5sum > > > 69fc348abbc0d811e17bb9037c655684 ./md5sum > > > > > > real 0m0.023s > > > user 0m0.000s > > > sys 0m0.008s > > > > > > this is my implementation using crypto > > > (http://www.haskell.org/crypto/). Am I doing something wrong? > > > > > > module Main where > > > > > > import System > > > import qualified Data.Digest.MD5 as MD5 > > > import qualified Data.ByteString as BS > > > > > > main = do > > > args <- getArgs > > > dt <- BS.readFile $ head args > > > putStrLn $ show $ MD5.hash . BS.unpack $ dt > > ^^^^ ^^^^^^^^^ > > > > not a good idea. > > > > You need an MD5 over bytestrings, not [Word8]. > > Wouldn't deforestation have produced something within a factor of 4-ish > of optimal?
There's no deforestation between ByteString.unpack and MD5.hash. So all the time here is spent taking some big bytestring, and unpacking it into n list cons cells. md5ing the bytestring directly should knock 95% off that. -- Don _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe