任何人都有关于本地开销的任何细节 - > Mono中的托管上下文切换?即通过使用C API调用.NET方法/创建.NET对象而导致的开销。
答案 0 :(得分:5)
从C代码调用托管方法的当前API具有以下类型的开销:
我们将介绍一个新的API,它可以消除上面第一点和最后一点的开销。与此同时,除非您每秒进行数百万次调用,否则这些开销非常小,并且几乎总是被称为实际工作的实际托管方法相形见绌。
答案 1 :(得分:2)
个人资料,如果您需要或需要具体细节,因为这是您了解具体情况是否足够快的唯一方法......
话虽如此,
Mono原生API非常快。使用Mono的C API创建对象时,它在创建对象时与托管运行时基本相同。调用方法类似。
真正的开销来自于尝试来回传递和转换数据。只是创建一个对象并调用一个方法非常快 - 尝试通过多种类型转换数据稍微慢一点。但是,使用C API非常快,因此不太可能成为性能问题。 (当然,除非你是在一个非常紧密的循环中做这个,或类似的东西。在这种情况下,将你的循环重构为一个方法管理方,然后只调用一次。这就是将一个上下文切换到位。 )