Inliner behaviour - tiny changes lead to huge performance
differences
David Menendez
dave at zednenem.com
Fri Nov 13 12:55:27 EST 2009
On Fri, Nov 13, 2009 at 2:04 AM, Bryan O'Sullivan <bos at serpentine.com> wrote:
>
> And the lengthI function is defined more generally, in the hope that I could
> use it for both Int and Int64 lengths:
>
> lengthI :: Integral a => Stream Char -> a
> lengthI (Stream next s0 _len) = loop_length 0 s0
> where
> loop_length !z s = case next s of
> Done -> z
> Skip s' -> loop_length z s'
> Yield _ s' -> loop_length (z + 1) s'
> {-# INLINE[0] lengthI #-}
Would it help to SPECIALIZE lengthI for Int and Int64?
--
Dave Menendez <dave at zednenem.com>
<http://www.eyrie.org/~zednenem/>
More information about the Glasgow-haskell-users
mailing list