Skip to content
  • Simon Peyton Jones's avatar
    [project @ 2001-12-14 17:24:03 by simonpj] · 5f087cf4
    Simon Peyton Jones authored
    -------------------------
    	Performance tuning things
    	-------------------------
    
    I did some nofib tests, and fixed a number of performance problems.
    
    1.  Things were getting floated to top level, and that prevented
    some useful fusion happening.
    	y = build g
    	x = foldr k z y
    
    Fixed by arranging that we only get really keen on floating to top
    level in the second run of the let-float-out pass.
    
    
    2.  Some fettling up on the let-floater itself.  It had some parameters
    that weren't even being used!  And it was stupidly floating things out
    of a one-shot lambda, and the float-in pass didn't float them back in.
    I think I fixed both of these problems.
    
    
    3.  The eta-reducer was not eta-reducing (/\a -> g a) to g.  In general
    it has to be a bit careful because "seq" means that (\x -> g x) is
    not in general the same as g ---- but it *is* the same for a type lambda.
    
    This turned out to be important in rule matching, where the foldr/build
    rule was not firing because the LHS of t...
    5f087cf4