gpt4 book ai didi

c# - 混合模式 .NET 程序集是否具有更好的性能?

转载 作者:行者123 更新时间:2023-11-30 14:34:36 25 4
gpt4 key购买 nike

我是 .Net 编程的新手,大约 1 年。

几天前,我查看了几篇与混合模式汇编相关的文章,出于好奇,我很难理解其中的很多内容。

  1. 如果使用 C#/VB.NET 可以轻松完成 P/Invoke,为什么 Microsoft 引入了混合模式程序集?

  2. 混合模式程序集的执行速度是否比纯 .Net 程序集快?

由于 .Net 是 CLR(很像 VM),所以我最好的猜测是在混合模式下编译的程序集也会在 CLR 中,因此最终会降低性能。

请帮我解决我的困惑!

最佳答案

混合模式程序集的主要用例是必须与现有 C 或 C++ 代码互操作。当然很常见。

它的设计并不是为了让代码更快。从托管代码过渡到 native 代码执行会产生一定的成本。它经过了大量优化,如果你做对了,那么你只需支付在垃圾收集器识别的堆栈上写入 cookie 的成本,这样它将避免通过非托管堆栈帧查找对象引用。成本只有少数 cpu 周期。但当您需要翻译数据时,可能会产生额外费用。一个字符串是典型的例子。或者固定一个托管对象,使其不能被收集器移动,数组就是典型的例子。

但是,您当然可以使用混合模式程序集来解决性能问题。如果您可以限制转换的次数,并且可以利用 C 或 C++ 编译器生成高度优化代码的能力,那么您就可以领先。没有什么神奇的公式可以证明你会,而且克服抖动当然也不是那么容易。它有一个非常有效的优化器,尽管它不能完全击败 C 编译器的优化器,因为它在时间限制下运行。您编写的代码的质量最重要。

始终首先使用分析器来消除任何错误,找到实际的热点并确保值得尝试。

关于c# - 混合模式 .NET 程序集是否具有更好的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13777992/

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