jwlato: > On Mon, Oct 27, 2008 at 12:34 AM, Alexander Dunlap > <[EMAIL PROTECTED]> wrote: > > On Sun, Oct 26, 2008 at 9:36 AM, John Lato <[EMAIL PROTECTED]> wrote: > >> Hello, > >> > >> I was experimenting with using ghc-6.10.0.20081007 on a project, and > >> it seems that binary-0.4.3.1 has markedly worse performance in certain > >> cases. With the following simple test: > >> > >>> import qualified Data.ByteString.Lazy as L > >>> import Data.Binary > >>> import Data.Binary.Get > >>> import Control.Monad > >>> > >>> main :: IO () > >>> main = do > >>> b <- L.readFile "some_binary_file" > >>> putStrLn $ show $ runGet getter b > >> > >>> getter :: Get [Word16] > >>> getter = replicateM 1000000 getWord16le > >> > >> running this program compiled with ghc-6.10 takes about 4 times as > >> long (and consumes much more memory) as when compiled with ghc-6.8.3. > >> The extra time appears to be proportional to the number of elements > >> processed in the Get. Running the programs with -hT shows a clear > >> memory difference, which I think is the source of the problem. I've > >> placed pdfs of that output at https://webspace.utexas.edu/latojw/data/ > >> > >> The difference seems to manifest itself only when the elements are > >> actually processed; changing "show $ runGet " to "show $ length $ > >> runGet " is slightly faster in 6.10. > >> > >> I was working on an Intel Mac with OS 10.4, binary-0.4.3.1, and > >> bytestring-0.9.1.4. Can anyone confirm this, or suggest what might be > >> the difference? > >> > >> Thank you, > >> John Lato > >> _______________________________________________ > >> Haskell-Cafe mailing list > >> Haskell-Cafe@haskell.org > >> http://www.haskell.org/mailman/listinfo/haskell-cafe > >> > > > > With GHC 6.8.2: > > > > test: too few bytes. Failed reading at byte position 1613914 > > > > real 0m27.573s > > user 0m12.917s > > sys 0m0.087s > > > > With GHC 6.11.20081003: > > > > test: too few bytes. Failed reading at byte position 1613914 > > > > real 0m21.528s > > user 0m14.759s > > sys 0m0.135s > > > > I'm not using the exact same versions as you are, but I seem to be > > getting different results. > > > > Hi Alexander, > > Thanks for trying this out. Based on your error, I'd guess that the > file isn't large enough to read all the requested data. In my case, > it was about 70MB. You could try reading from /dev/random, or rather > than reading from a file, use something like > > >> test_pure = let b = Data.ByteString.Lazy.repeat 1 in putStrLn $ show $ > >> runGet getter b > > I haven't tried a pure version myself, so I don't know what to expect > from it. Something to do tonight... >
I can reproduce the slowdown with ghc 6.10 in the binary benchmark suite. Investigating. -- Don _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe