| Author |
Message |
yoavhacohen
Joined: 20 Dec 2008 Posts: 2 Location: Israel
|
Posted: Sat Dec 20, 2008 11:02 pm Post subject: Pinned arrays or native arrays? |
|
|
Hi,
I'm writing a C# wrapper for a native imaging library.
I can allocate the image data on the managed heap, pin it and pass it to the native structure as a pointer, or allocate it on the native heap.
What's better in terms of time performance?
Thanks in advance,
Yoav _________________ www.YoavHaCohen.com |
|
| Back to top |
|
 |
Robert
Joined: 30 Oct 2006 Posts: 428 Location: Cambridge, UK
|
Posted: Mon Dec 22, 2008 9:53 am Post subject: |
|
|
Hi,
I guess this is probably one of those "it depends" answers .
Apparently the pinning operation for managed objects is cheap, and I'm guessing that the allocation costs will probably be similar both ways. The major difference is probably going to be in terms of freeing / GC costs.
If you're allocating large objects (>85K I think), they go on to the Large Object Heap (lots more info here), which firstly only gets collected during a Gen 2 GC (the most expensive), and secondly doesn't get compacted, so you might run into virtual memory fragmentation issues, on 32-bit systems at least.
If you allocate natively, you've of course got more control over when you free the memory, and if you're using a lot of these structures, you might get some benefit by not giving the GC so much work to do.
But I suspect the best thing to do is going to be to write it either way, see where your speed issues actually are, and then move on from there - there's no point optimising the memory allocation code if it's only 0.1% of the execution time! .
Hope that helps,
Robert _________________ Robert Chipperfield
Developer, Red Gate Software Ltd |
|
| Back to top |
|
 |
|
|
All times are GMT + 1 Hour
|
| Page 1 of 1 |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group