我正在从 C# 调用两个 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:
对于 C# 的每个函数调用,函数 ID 都需要发送到 C++。C++ 函数不是空函数。它需要将函数 ID 存储在 STL 中,然后另一个线程将处理它。我正在做一个 .NET 分析器之类的事情。我需要分析每个函数调用。这个 FuncA C++ 函数将从注入的辅助函数中调用。
谢谢,
./拉胡尔