我有一个C ++ / CLI库,可以调用许多本机C ++方法。我已阅读许多主题,声明您不应混合托管代码和非托管代码。我找不到任何说明如何避免这些开关及其导致性能问题的原因。有人可以分享最佳实践。
答案 0 :(得分:3)
使用C ++ / CLI的唯一原因是它支持混合托管代码和本机代码。如果一切都被管理,那么使用C#或VB,如果一切都是原生的,那么使用C或C ++。或者您喜欢的任何语言。显然避免混合是荒谬的。
从托管到非托管都有少量开销。 C ++ / CLI编译器自动生成一些机器代码,用于在堆栈上推送“cookie”,旨在防止垃圾收集器冒泡进入非托管堆栈帧,并错误地将该帧上的指针解释为托管对象引用。花费大约7纳秒,给予或采取。