Defining a custom newByteArray primop that uses calloc?

Carter Schonwald carter.schonwald at gmail.com
Thu Nov 27 04:22:21 UTC 2014


you cant provide > 1 word alignment guarantees if the bytearray isnt
pinned, ... at least with the current RTS setup. (though that would be
pretty handy if possible)

On Wed, Nov 26, 2014 at 8:55 PM, Erik de Castro Lopo <mle+hs at mega-nerd.com>
wrote:

> Brandon Simmons wrote:
>
> > In my tests, using calloc from:
> >
> >
> https://hackage.haskell.org/package/missing-foreign-0.1.1/docs/Foreign-Marshal-MissingAlloc.html
> >
> > was about twice as fast as allocating and zeroing the same amount of
> > memory with `newByteArray` + any of `copy/set/fillMutableByteArray`
> > (all three were nearly identical). Is there a way I can reasonably
> > define my own `newByteArray` that uses calloc?
> >
> > FWIW here are a couple of the benchmarks I'm working with in criterion:
> >
> >     arrTestSet :: Int -> IO ()
> >     arrTestSet len = do
> >         let eBytes = (P.sizeOf (undefined::Int))*len
> >         a <- P.newAlignedPinnedByteArray
>
> Why pinned memory?
>
> Erik
> --
> ----------------------------------------------------------------------
> Erik de Castro Lopo
> http://www.mega-nerd.com/
> _______________________________________________
> Glasgow-haskell-users mailing list
> Glasgow-haskell-users at haskell.org
> http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/glasgow-haskell-users/attachments/20141126/52be0a49/attachment.html>


More information about the Glasgow-haskell-users mailing list