sedillard: > I can't reproduce the behavior on any of the less egregiously inlined > functions. For everything else the running times are the same using either > local packages or installed libraries. > > On Tue, Jun 24, 2008 at 3:16 PM, Ian Lynagh <[EMAIL PROTECTED]> wrote: > > On Tue, Jun 24, 2008 at 02:01:58PM -0700, Donald Bruce Stewart wrote: > > > > > > 1) Library is installed via cabal. > > > 2) Library source lives in the same directory as the application, > so that > > > ghc --make Examples.hs also builds the library. > > > > That's compiling Examples with full access to the source though! > > So ghc has the entire source available. > > That shouldn't make any difference. I suspect a flag difference is to > blame - giving cabal build the -v flag will show which flags it is > using. > > I've taken all optimization flags out of the .cabal file. They don't have > any effect. My understanding of things is this: (please correct if wrong) > All functions have inline pragmas, and all are small (1 or 2 lines) so > their definitions are all spewed into the .hi files. So in both scenarios > (library vs local) GHC can "see" the whole library. Since every function > is inlined, it doesn't matter what flags the library is compiled with. > That compiled code will never be used so long as the application is > compiled with optimization on. > > Now the particulars of the situation are this: the function in question is > inlined very deeply, it has many instance constraints, and during > simplification the core blows up to _ridiculous_ sizes. (Compilation with > -ddump-simpl is taking about 5-10 min.) I think I'm pushing the compiler > to unreasonable limits, and I think maybe something non-obvious is going > on inside. > > On the otherhand, pushing the compiler in this way gets me a 3x speedup, > which is nothing to sneeze at. In the meantime I'll see what I can do to > make this function (gaussian elimination) more amenable to simplification. > The rest of the library works great.
You might want to give the simplifier enough time to unwind things. I use, e.g. -O2 -fvia-C -optc-O2 -fdicts-cheap -fno-method-sharing -fmax-simplifier-iterations10 -fliberate-case-threshold100 in my ghc-options for 'whole program' libraries. Raise these limits if you find they're having an effect -- Don _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users