gpt4 book ai didi

c# - 从托管代码调用非托管代码的性能

转载 作者:太空狗 更新时间:2023-10-29 23:17:46 27 4
gpt4 key购买 nike

我有一个 win32 dll 和两个使用相同 dll 的应用程序。一个是在非托管空间中使用 c 编写的,另一个是使用 Pinvokes 调用非托管代码的 .net 应用程序。

有时.net 应用程序的性能优于c 应用程序。从技术上讲,从 .net 调用非托管代码会产生性能开销,但在这种情况下不会。

我检查了 msdn 引用,似乎在进行实际调用之前发生了某种预处理。在链接期间加载 dll。

我想了解 .net 应用程序在哪些情况下表现出色?

最佳答案

pinvoke 编码器是 .NET 框架中优化最重的代码块之一。非常重要的是,在非托管操作系统上运行托管程序时,有很多您看不到的 pinvoke。开销的数量是高度可变的。当 DLL 已经加载并且 pinvoked 函数的参数是简单的整数类型时,它只是几个 cpu 周期。在需要进行字符串转换时的数百个周期。

在任何情况下,它都不会比本地调用更快。准确地测量只有少数几个周期的开销是很困难的。请记住,您可能会无意中测量测试程序的性能而不是 pinvoke 调用。

关于c# - 从托管代码调用非托管代码的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7609381/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com