Replacement for GMP: Update
Peter Tanski
p.tanski at gmail.com
Thu Aug 10 11:16:38 EDT 2006
Simon,
> Possibly, yes. IIRC, -O3 was mainly to get some loop unrolling. This
> is a performance-critical part of the system though, and when
> making any
> changes we like to measure things to make sure we haven't pessimised
> performance.
I will try to test it both ways, then. Also, -optc-O3 is turned on
even for debug builds since GC_HC_OPTS is set unconditionally. I
could change it to:
ifneq (,$(findstring $(SRC_HC_OPTS), -DDEBUG))
GC_HC_OPTS += -optc-O3
endif
>> (3) I have been looking at how to implement a dual-constructor-in-a-
>> pointer for Integer (i.e., merge constructors of small Integers and
>> big Integers into the Int#). Would that solution be workable or
>> might it break current Haskell programs? Just a thought.
>
> Which representation in particular are you talking about here?
I was talking about the definition of Integer in packages/base/GHC/
Num.lhs particularly the implementation in PrimOps.cmm, which returns
Integers as:
/* returns (# size :: Int#,
data :: ByteArray# #)
*/
RET_NP(s,p);
If the ByteArray were indicated through a pointer, the representation
in Haskell would be
J# IntegerT#
{- new type, depending on pointer size,
either holding 30 or 62 bits of precision -}
and a Cmm procedure returning an Integer would be:
RET_NP(p);
I hope this doesn't confuse you.
Best regards,
Peter
More information about the Glasgow-haskell-users
mailing list