major missing piece to arrays?
Simon Marlow
simonmar at microsoft.com
Mon Jul 19 05:15:50 EDT 2004
On 17 July 2004 01:47, John Meacham wrote:
> so, ByteArray# seems to be equivalant to a raw pointer in speed, with
> the advantage that it is garbage collected.
>
> however foreignptrs are twice as slow! and even slower than an IORef.
Were you using mallocForeignPtr here? Or newForeignPtr?
> as a tangent..
>
> I have been using the
>
> counter :: Ptr Int
> counter = unsafePerformIO (new 0)
>
> trick to create fast global counters in performance critical stuff, it
> seems to work quite well. it would be nice if there were a way to
> allocate the memory staticaly though, because then counter could be a
> constant and should be much faster.
>
> perhaps something like the
>
> "foo"# :: Addr# trick? like
>
> foreign data counter 4 :: Ptr Int
>
> to reserve 4 bytes in the bss... hmm..
You could allocate the variable statically in C, and use
foreign import "&foo" :: Ptr Int
That should be nice & fast to access.
Cheers,
Simon
More information about the Glasgow-haskell-users
mailing list