[Haskell-cafe] newbie questions (read, etc., with Data.ByteString.Lazy.Char8)

Don Stewart dons at galois.com
Mon Oct 6 23:19:15 EDT 2008


Hmm. How are you compiling it? Using bytestring 0.9.1.x ?

Should be fast,
    http://shootout.alioth.debian.org/gp4/benchmark.php?test=sumcol&lang=all

Assuming you're turning on optimisations ( ghc -O2 )

-- Don


666wman:
>    the problem is that using readInt is actually _as slow_, at least using my
>    test script :-((
> 
>    On Tue, Oct 7, 2008 at 5:12 AM, Don Stewart <[1]dons at galois.com> wrote:
> 
>      666wman:
>      >    a slight modification to compile it :
>      >
>      >    change:
>      >    where sumFile = sum . map read . L.words
>      >    to :
>      >    where sumFile = sum . map (read . L.unpack) . L.words
>      >
>      >    but it's actually _slower_ than the non-bytestring version.
> 
>      Never unpack a bytestring.
> 
>         import qualified Data.ByteString.Lazy.Char8 as S
> 
>         main = print . go 0 =<< S.getContents
>           where
>             go n s = case S.readInt s of
>                             Nothing     -> n
>                             Just (k,t)  -> go (n+k) (S.tail t)
> 
>      Assuming you're reading int, integers or doubles.
> 
> References
> 
>    Visible links
>    1. mailto:dons at galois.com


More information about the Haskell-Cafe mailing list