[Haskell-cafe] Hmm, what license to use?

Mitchell, Neil neil.mitchell.2 at credit-suisse.com
Fri Oct 3 03:33:43 EDT 2008


Hi


> > > You mean shared libraries without the opportunity to 
> inline library code?
> > > This would result in a huge performance loss, I think.
> >
> > Usually _mild_ performance loss, in exchange for major code-size 
> > savings, I would think. C obviously has worked quite fine under 
> > exactly this restraint (though C implementations obviously aren't 
> > built to take as great advantage of inlining library code 
> as Haskell may be).
> 
> I think that the performance loss is much higher in the case 
> of Haskell because of Lazy Evaluation, massive use of higher 
> order functions and possibly more.

Example 1:

foo x | "test" `isPrefixOf` xs = ...
	| otherwise = ...

If you have cross-module inlining, you get the rather obvious if like
construct. If you don't, you have to evaluate otherwise and test its
value.

Example 2:

(a :: Int) + b

If you have cross-module specialisation you get a primitive integer
arithmetic instruction (possibly with a bit of unboxing, although often
not). If you don't, you get a dictionary lookup, followed by a higher
order application.

One reason cross-module inlining is essential is that many Haskell
functions don't do very much, think of (+), (||), (>>), not, otherwise
etc. In C these would be built-in's, so are always available to the
optimiser (and usually just one instruction), in Haskell you need to get
them from the Prelude.

Thanks

Neil

==============================================================================
Please access the attached hyperlink for an important electronic communications disclaimer: 

http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html
==============================================================================



More information about the Haskell-Cafe mailing list