Я вызываю две функции C++ из C#. Выполняя это на итерации около 1 миллиона звонков, я вижу накладные расходы около 30%. ФункцияНакладные расходы - вызов функции C++ из C#
C++:
EXTERN_C void STDAPICALLTYPE FunctionA(UINT_PTR mathId)
{
...
...
}
В моей C DLL # сборки как:
[DllImport("CPlusPlus.dll")]
public static extern void FunctionA([In] IntPtr mathID);
Вызывается из функции, как показано ниже:
public static void HelpingFunction([In]UInt64 mathID)
{
FunctionA((IntPtr)mathID);
}
Этот способ реализации создает больше накладных расходов, когда «HelpingFunction» называется более миллиона раз.
Может ли кто-нибудь дать мне другие идеи, чтобы сократить накладные расходы? Каковы другие способы вызова функции C++ из сборки C#?
Очень трудно понять, как вы могли бы улучшить это, потому что мы не можем увидеть внутренности 'FunctionA'. –
Вы также можете рассмотреть возможность создания оболочки CLI вокруг цикла, поэтому ваши накладные расходы сокращаются с «миллионов» вызовов до нескольких. –