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,