[Mono-list] Fast Passing Strings to Interop without Marshaling

Chris Howie cdhowie at gmail.com
Mon Nov 3 03:29:39 EST 2008


On Mon, Nov 3, 2008 at 2:48 AM, Bradford Stephens
<bradfordstephens at gmail.com> wrote:
> We're passing very large strings to a C program in Linux through Mono
> via Interop. The C program takes a (char*), and our C# program uses a
> String.
>
> The problem is that these strings can be 100kB+, and there seems to be
> a large performance impact. Often, just passing the string along takes
> over 150 milliseconds.
>
> Any suggestions on how to do this faster? Can I pass a reference to
> the string or some sort of char array without Marshaling it? I'm
> pretty sure the performance hit comes from copying everything during
> the marshaling process. I know it can be a tricky problem because C
> chars are 1 byte, and C# are 2.

This is not possible unless you are storing your string in C# as byte[]s.

-- 
Chris Howie
http://www.chrishowie.com
http://en.wikipedia.org/wiki/User:Crazycomputers


More information about the Mono-list mailing list