[Haskell-cafe] GHC optimizations and unsafePerformIO - Was: Data.Typeable TypeRep Ord instance.
tom.davie at gmail.com
Sat Jan 1 15:07:13 CET 2011
On 1 Jan 2011, at 12:38, Andreas Baldeau wrote:
> Thinking about this there might be one problem:
> Without having looked further into this I think perfomance might not
> be as expected. Using unsafePerformIO affects ghc's optimzations,
> doesn't it?
> So I wonder if it's a good idea (from a performance point of view) to
> use this.
>> 2010/12/30 Andreas Baldeau <andreas at baldeau.net>:
>>> instance Ord TypeRep where
>>> compare t1 t2 =
>>> (unsafePerformIO (typeRepKey t1))
>>> (unsafePerformIO (typeRepKey t2))
>>> typeRepKey :: TypeRep -> IO Int
>>> typeRepKey (TypeRep (Key i) _ _) = return i
> So the question is, if ghc could transform this to simply compare the
> keys throwing away unsafePerformIO and return.
Wouldn't a much better plan simply be to take typeRepKey out of the IO monad?
More information about the Haskell-Cafe