[nhc-users] fps and Foreign(Obj/Ptr)
Don Stewart
dons at galois.com
Wed Nov 5 14:18:03 EST 2008
Malcolm.Wallace:
> "Donn Cave" <donn at avvanta.com> wrote:
>
> > I've run into a problem where it looks like my application crashes
> > with "Error: allocation limit (1024) exceeded for Foreign(Obj/Ptr)"
> > because it's using too many ByteStrings. Does that seem plausible?
>
> Yes, it seems plausible. nhc98's runtime system has a constant-size
> table for storing ForeignPtrs.
>
> > Can I simply increase the size of that foreign[] array, by several
> > orders of magnitude, to get around this?
>
> Yes, but you will need to recompile nhc98's RTS. (Not hard.) In
> src/runtime/Kernel/cdata.c, just change the #define'd constant
> MAX_FOREIGNOBJ, and then (at the toplevel)
> make runtime
> make install
>
> *However*, you should also be aware that ByteStrings have been optimised
> for use in ghc, not nhc98. In fact, it turns out that using ByteString
> is orders of magnitude slower than using plain String, in nhc98. I
> can't remember the exact factor, but it was something of the order of
> 60x slower.
For one benchmark.
I'd imagine there's others where space is a premium, where it would be
no contest to use a packed representation.
-- Don
More information about the Nhc-users
mailing list