[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