
On Sun, Oct 26, 2008 at 9:36 AM, John Lato
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.