mtlx has a nice design but is slow

I just refactored my type and transform system prototype (introduced in [1] but changed since then) from using mtlx [2] (type-indexed monad transformers described in [3]) to mtl using RWST. mtlx allowed me to cleanly separate the various monadic components in a convenient way. Unfortunately, I found it to be too slow. The refactoring was an experiment to see how slow. I was rather surprised: Running time of a compiled main with a list of tests: mtlx (7 transformers): 2 min 52 sec mtl (RWST): 0 min 13 sec It's frustrating to see such a huge performance gap for a better design. Regards, Sean [1] http://splonderzoek.blogspot.com/2011/03/draft-type-changing-program-improve... [2] http://hackage.haskell.org/package/mtlx [3] http://www.ittc.ku.edu/~marks/cgi-bin/pubs/monadfactory.pdf

Is the package missing some obvious inlining in the instances?
On Wed, Apr 6, 2011 at 10:13 AM, Sean Leather
I just refactored my type and transform system prototype (introduced in [1] but changed since then) from using mtlx [2] (type-indexed monad transformers described in [3]) to mtl using RWST. mtlx allowed me to cleanly separate the various monadic components in a convenient way. Unfortunately, I found it to be too slow. The refactoring was an experiment to see how slow. I was rather surprised:
Running time of a compiled main with a list of tests: mtlx (7 transformers): 2 min 52 sec mtl (RWST): 0 min 13 sec
It's frustrating to see such a huge performance gap for a better design.
Regards, Sean
[1] http://splonderzoek.blogspot.com/2011/03/draft-type-changing-program-improve... [2] http://hackage.haskell.org/package/mtlx [3] http://www.ittc.ku.edu/~marks/cgi-bin/pubs/monadfactory.pdf
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

GHC's goal is to be good enough at inlining and optimisation that you shouldn't take a performance hit for adding layers of abstraction. Sometimes it needs help (eg inlining pragmas). So as Don implies, it might be worth digging a bit to see where the performance hit comes from.
Simon
| -----Original Message-----
| From: haskell-cafe-bounces@haskell.org [mailto:haskell-cafe-
| bounces@haskell.org] On Behalf Of Don Stewart
| Sent: 06 April 2011 18:19
| To: Sean Leather
| Cc: Haskell Café List
| Subject: Re: [Haskell-cafe] mtlx has a nice design but is slow
|
| Is the package missing some obvious inlining in the instances?
|
| On Wed, Apr 6, 2011 at 10:13 AM, Sean Leather
participants (3)
-
Don Stewart
-
Sean Leather
-
Simon Peyton-Jones