[Haskell-cafe] Performance Issues

Adam Langley agl at imperialviolet.org
Tue Jan 29 11:37:42 EST 2008


> This computes 1000000!. This version takes 8m29.189s to execute.
> Replace foldr1 with foldr and that goes down to 7m4.315s. Replace
> product' with the Prelude product and it takes only 6m17.685s. Why is
> that so? I'm using ghc 6.8.1 on Mac OS X.

I'm guessing that the speedup with the Prelude product is because it's
a left fold. foldr goes to the end of the list and starts applying
backwards, up the thunks. A left fold just keeps an accumulator as it
walks down.

The foldr1 to foldr speedup might be because foldr1 has three cases,
to foldr's two:
http://haskell.org/ghc/docs/latest/html/libraries/base/src/GHC-List.html#foldr1

AGL

-- 
Adam Langley                                      agl at imperialviolet.org
http://www.imperialviolet.org                       650-283-9641


More information about the Haskell-Cafe mailing list