C# performance - Using unsafe pointers instead of IntPtr and Marshal
问题 Question I'm porting a C application into C#. The C app calls lots of functions from a 3rd-party DLL, so I wrote P/Invoke wrappers for these functions in C#. Some of these C functions allocate data which I have to use in the C# app, so I used IntPtr 's, Marshal.PtrToStructure and Marshal.Copy to copy the native data (arrays and structures) into managed variables. Unfortunately, the C# app proved to be much slower than the C version. A quick performance analysis showed that the above mentioned