Program slower with local definitions
Simon Peyton-Jones
simonpj at microsoft.com
Tue Sep 5 15:00:53 EDT 2006
That's odd. Making things more global can reduce optimisation
opportunities, but making things ore local should not. You can say
-ddump-simpl to get an idea of what the differences are.
If you can make a smallish repo case, I'll take a look, though perhaps
not before ICFP.
Simon
| -----Original Message-----
| From: glasgow-haskell-users-bounces at haskell.org
[mailto:glasgow-haskell-users-
| bounces at haskell.org] On Behalf Of Michael Marte
| Sent: 05 September 2006 17:40
| To: glasgow-haskell-users at haskell.org
| Subject: Program slower with local definitions
|
| Hello *,
|
| I noticed a five percent speed up by making local definitions global.
|
| This is the first version with local definitions:
|
| f = <some expression based on mySet>
| where
| mySet = foldl (flip Set.insert) Set.empty myList
| myList = <some constant list>
|
| Then I moved mySet and myList to the top level which gave me the speed
up.
|
| Shouldn't both versions show the same behaviour with regard to run
time?
| Doesn't the compiler lift mySet and myList to top level
automatically?
| Are myList and mySet evaluated in every call to f when defined
locally?
|
| I am using ghc 6.4.2 on Windows XP.
|
| Michael
| _______________________________________________
| Glasgow-haskell-users mailing list
| Glasgow-haskell-users at haskell.org
| http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
More information about the Glasgow-haskell-users
mailing list