从C#应用程序调用本机库中的函数有什么缺点?对性能影响我能期待什么?这些函数是基本的工程计算,并没有太复杂.我们可以在某天用C#重写它们.
P/Invoke每次调用的开销大约为10-30 x86指令. 这有多重要取决于你越过边界的频率,以及你花在另一边的时间.例如,如果您的计算需要10微秒才能运行,那么与计算成本相比,额外的10-30条指令将无关紧要.如果你的计算是微不足道的并且被大量调用,那么开销可能足以证明现在移植它的合理性,或者创建一个执行重复调用的非托管包装函数(以便最小化跨越边界的次数).
主要缺点不是性能,而是信任要求.例如,如果您调用本机代码,则无法从网络驱动器或Intranet站点运行(至少在没有其他配置的情况下),因为这些源默认情况下不如本地计算机受信任.