У меня есть некоторый код C #, который требует больших двоичных манипуляций, поэтому я написал неуправляемый метод C ++ для замены одного из методов C #. К моему шоку, это было в 10 раз медленнее. Я запустил профиль и обнаружил, что медлительность возникает из-за накладных расходов при вызове внешнего метода, а не самого метода.
Поэтому я подумал, что если я напишу метод в управляемом C ++, я потеряю издержки на вызов, но все равно буду иметь скорость C ++. Во-первых, верно ли это предположение?
Вот мой неуправляемый код C ++:
#include "stdafx.h";
unsigned __int32 _stdcall LSB_i32(unsigned __int32 x)
{
DWORD result;
_BitScanForward(&result, x);
return (unsigned __int32)result;
}
Вот мой код C #:
public static partial class Binary
{
[DllImport(@"CPP.dll")]
public static extern int LSB_i32(int value);
}
Я что-то здесь не так делаю?
Как мне перевести вышеперечисленное в управляемый C ++? Я немного просмотрел этот вопрос, но, поскольку я не знаком с управляемым C ++, я не ушел далеко.