C# から 2 つの C++ 関数呼び出しを呼び出しています。私のコードは以下のとおりです。
[DllImport("A.dll", CallingConvention = CallingConvention.StdCall, EntryPoint = "FuncA"), System.Security.SuppressUnmanagedCodeSecurity]
public static extern void FuncA(UInt64 functionID);
C++ コードでは次のとおりです。
EXTERN_C void STDMETHODCALLTYPE FuncA(UINT_PTR functionId)
{
return;
}
この関数は、C# から C++ に約 200 万回呼び出されています。この関数呼び出しがなければ、私の Web リクエストは 5.9 秒で完了します。この関数呼び出しでは、7.1 秒かかります。
約 15% のオーバーヘッド。投稿を見て、すでに「SuppressUnmanagedCodeSecurity」を使用しました。これにより、オーバーヘッドが 30% から 15% に削減されました..しかし、この 15% のオーバーヘッドを削減する他の方法はありますか??
アップデート1:
関数 ID は、C# の関数呼び出しごとに C++ に送信する必要があります。C++ 関数は空の関数ではありません。関数 ID を STL に格納する必要があり、別のスレッドがそれを処理します。私は.NETプロファイラーのようなことをしています。すべての関数呼び出しをプロファイリングする必要があります。この FuncA C++ 関数は、挿入されたヘルパー関数から呼び出されます。
ありがとう、
./ラフル