我有一个 C++/CLI 库,它调用许多本机 C++ 方法。我读过许多线程,指出不应混合托管和非托管代码。我找不到任何说明如何避免这些开关以及为什么它会导致性能问题的信息。有人可以分享最佳实践吗?
使用 C++/CLI 的唯一原因是它支持混合托管代码和本机代码。如果一切都是托管的,则使用 C# 或 VB,如果一切都是本机的,则使用 C 或 C++。或者您喜欢的任何语言。显然,避免混合是没有意义的。
从托管到非托管有少量开销。 C++/CLI 编译器自动生成一些机器代码,将“cookie”推送到堆栈上,旨在防止垃圾收集器误入非托管堆栈帧并将该帧上的指针错误解释为托管对象引用。花费大约 7 纳秒,或多或少。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)