Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 优化C++;从C打来的电话# 我调用C++的两个C++函数调用,我的代码在下面。 [DllImport("A.dll", CallingConvention = CallingConvention.StdCall, EntryPoint = "FuncA"), System.Security.SuppressUnmanagedCodeSecurity] public static extern void FuncA(UInt64 functionID); C++代码中的p>是: EXTERN_C void STDMETHODCALLTYPE FuncA(UINT_PTR functionId) { return; } 这个函数从C到C++被调用了大约200万次。 如果没有此函数调用,我的web请求将在5.9秒内完成。。通过这个函数调用,我得到了7.1秒_C#_C++_.net_Interop_Clr Profiling Api - Fatal编程技术网 是: EXTERN_C void STDMETHODCALLTYPE FuncA(UINT_PTR functionId) { return; } 这个函数从C到C++被调用了大约200万次。 如果没有此函数调用,我的web请求将在5.9秒内完成。。通过这个函数调用,我得到了7.1秒,c#,c++,.net,interop,clr-profiling-api,C#,C++,.net,Interop,Clr Profiling Api" /> 是: EXTERN_C void STDMETHODCALLTYPE FuncA(UINT_PTR functionId) { return; } 这个函数从C到C++被调用了大约200万次。 如果没有此函数调用,我的web请求将在5.9秒内完成。。通过这个函数调用,我得到了7.1秒,c#,c++,.net,interop,clr-profiling-api,C#,C++,.net,Interop,Clr Profiling Api" />

C# 优化C++;从C打来的电话# 我调用C++的两个C++函数调用,我的代码在下面。 [DllImport("A.dll", CallingConvention = CallingConvention.StdCall, EntryPoint = "FuncA"), System.Security.SuppressUnmanagedCodeSecurity] public static extern void FuncA(UInt64 functionID); C++代码中的p>是: EXTERN_C void STDMETHODCALLTYPE FuncA(UINT_PTR functionId) { return; } 这个函数从C到C++被调用了大约200万次。 如果没有此函数调用,我的web请求将在5.9秒内完成。。通过这个函数调用,我得到了7.1秒

C# 优化C++;从C打来的电话# 我调用C++的两个C++函数调用,我的代码在下面。 [DllImport("A.dll", CallingConvention = CallingConvention.StdCall, EntryPoint = "FuncA"), System.Security.SuppressUnmanagedCodeSecurity] public static extern void FuncA(UInt64 functionID); C++代码中的p>是: EXTERN_C void STDMETHODCALLTYPE FuncA(UINT_PTR functionId) { return; } 这个函数从C到C++被调用了大约200万次。 如果没有此函数调用,我的web请求将在5.9秒内完成。。通过这个函数调用,我得到了7.1秒,c#,c++,.net,interop,clr-profiling-api,C#,C++,.net,Interop,Clr Profiling Api,大约15%的管理费用。我已经通过查看一篇文章使用了“SuppressUnmanagedCodeSecurity”,这将开销从30%减少到了15%。。但是有没有其他方法可以减少这15%的开销呢 更新1: 函数C需要为C++的每个函数调用发送到C++。C++函数不是空函数。它需要将函数ID存储在STL中,另一个线程将处理它。我正在做一个.NET分析器之类的事情。我需要分析每个函数调用。这个函数C++函数将从注入的辅助函数调用。p> 谢谢 ./RuHuL < P> C++函数是做什么的?它真的是一个

大约15%的管理费用。我已经通过查看一篇文章使用了“SuppressUnmanagedCodeSecurity”,这将开销从30%减少到了15%。。但是有没有其他方法可以减少这15%的开销呢

更新1:

函数C需要为C++的每个函数调用发送到C++。C++函数不是空函数。它需要将函数ID存储在STL中,另一个线程将处理它。我正在做一个.NET分析器之类的事情。我需要分析每个函数调用。这个函数C++函数将从注入的辅助函数调用。p> 谢谢


./RuHuL

< P> C++函数是做什么的?它真的是一个空方法吗?这是你行动链中的必要步骤吗

也许将此方法重写为C#会更快,以便将其合并到工作流中,而不必调用外部(可能不安全)方法

如果C++代码执行的动作与您的流的其余部分无关,那么您可能会通过在后台工作程序或单独的线程中运行来赢得一些时间,因此您的C代码不必等待代码运行。我认为这可能是一个有效的选项,因为您的方法返回void


也许有更多的信息可以帮助我们找到一个更适合的答案。< /P> < P>作为一个远景,你可以创建一个管理C++ C++ CLI静态库,它调用了非性能C++函数,并将其性能降低,并将其添加到C++项目中的C++/CLI库中。然后,C++应用程序可以对托管的C++ CLI库进行管理方法调用,而这又可以生成非托管方法调用。虽然这会导致一些间接的,但是它可能会带来一些性能的提高。

让1调用C++方法,这个调用的次数是2M次吗?@拉胡尔,你有没有想过仅仅调用一个空方法200万次真的需要1.2秒?从另一个程序集调用等效的空C#方法需要多少时间?这个想法需要+1,但我怀疑如果中间有一个额外的堆栈帧,调用速度会更快。你能详细说明为什么管理C++调用性能降低吗?也许可以通过比较结果的IL并排?由于该方法无效,并且正在传递32位值(堆栈)类型,因此我认为原始代码将尽可能快。静态libs()还有更多的麻烦,VisualStudio从来都不支持它们,因此需要手动调用命令行编译器(csc.exe)。仍然值得一试。