How do I check the optimisation level of the built-in splitAt? Is something other than -O2 giving me my speed increase?

Hello Glasgow-Haskell Users, It was suggested to me in this thread in Haskell-Cafe http://www.haskell.org/pipermail/haskell-cafe/2008-May/042797.html which was a subsidiary of a previous thread http://www.haskell.org/pipermail/haskell-cafe/2008-April/042155.html that there might be some reason other than the -O2 optimisation level I applied to my version of splitAt that was making my program run about 30% faster than when I used the built-in splitAt. Can somebody tell me how to check what the -O level is for the built-in splitAt? Or alternatively tell me what the optimisation level is for the libraries. (Sorry I'm not sure of the right terminology for these built-in / library / Prelude things.) Richard.

Richard Kelsall wrote:
Hello Glasgow-Haskell Users,
It was suggested to me in this thread in Haskell-Cafe
http://www.haskell.org/pipermail/haskell-cafe/2008-May/042797.html
which was a subsidiary of a previous thread
http://www.haskell.org/pipermail/haskell-cafe/2008-April/042155.html
that there might be some reason other than the -O2 optimisation level I applied to my version of splitAt that was making my program run about 30% faster than when I used the built-in splitAt.
Can somebody tell me how to check what the -O level is for the built-in splitAt? Or alternatively tell me what the optimisation level is for the libraries.
(Sorry I'm not sure of the right terminology for these built-in / library / Prelude things.)
It's hard to tell what optimisation level your libraries were compiled with. The default setting is -O, but when building binary distributions we usually set it explicitly to -O2. If you got your binary from another source, they might have only used -O. Cheers, Simon

Hello Simon, Thursday, May 15, 2008, 1:31:32 PM, you wrote:
It's hard to tell what optimisation level your libraries were compiled with. The default setting is -O, but when building binary distributions we usually set it explicitly to -O2. If you got your binary from another source, they might have only used -O.
not surprising that noone answered this question in cafe :) actually, main Windows builds goes from Sigbjorn Finne afair. may be from Neil too. so we probably need to warn them that their builds may be sub-optimal? -- Best regards, Bulat mailto:Bulat.Ziganshin@gmail.com

Bulat Ziganshin wrote:
Hello Simon,
It's hard to tell what optimisation level your libraries were compiled with. The default setting is -O, but when building binary distributions we usually set it explicitly to -O2. If you got your binary from another source, they might have only used -O.
not surprising that noone answered this question in cafe :)
actually, main Windows builds goes from Sigbjorn Finne afair. may be from Neil too. so we probably need to warn them that their builds may be sub-optimal?
Thanks chaps, For the record I'm using the Windows version of GHC 6.8.2 downloaded from here http://haskell.org/ghc/download_ghc_682.html MD5 is 5356a12f056a32ef35fa44db2e2204fc I just downloaded the one that's there currently and it's the same as the one I'm using which I think I downloaded in January. Richard.

On Thu, May 15, 2008 at 02:13:32PM +0100, Richard Kelsall wrote:
Bulat Ziganshin wrote:
Hello Simon,
It's hard to tell what optimisation level your libraries were compiled with. The default setting is -O, but when building binary distributions we usually set it explicitly to -O2. If you got your binary from another source, they might have only used -O.
not surprising that noone answered this question in cafe :)
actually, main Windows builds goes from Sigbjorn Finne afair. may be from Neil too
The builds were always done on MSR machines, although Sigbjorn used to bundle them up into installers. These days the MSR machines make the installers too, with a script from Neil.
For the record I'm using the Windows version of GHC 6.8.2 downloaded from here
I'm pretty sure that's got the libraries built with -O, although I haven't looked for the log of that actual build. We only use -O2 on the Linux builds as far as I can see, but I'm not sure there's a good reason for that. I also don't know why we don't just make our preferred settings the default in the build system; Simon? Thanks Ian
participants (4)
-
Bulat Ziganshin
-
Ian Lynagh
-
Richard Kelsall
-
Simon Marlow